взять символьный ввод в python из файла? - PullRequest
0 голосов
/ 04 мая 2010

в python, предположим, у меня есть файл data.txt. который имеет 6 строк данных. Я хочу рассчитать количество строк, которое я планирую сделать, пройдя по каждому символу и выяснив количество символов \ n в файле Как взять один символьный ввод из файла? Readline занимает всю строку.

Ответы [ 4 ]

3 голосов
/ 04 мая 2010

Я думаю, вы ищете метод readlines, как в

lines = open("inputfilex.txt", "r").readlines()

Это даст вам список каждой из строк в файле. Чтобы узнать, сколько строк вы можете просто сделать:

len(lines)

А затем получите к нему доступ с помощью индексов, таких как lines[3] или lines[-1], как любой обычный список Python.

1 голос
/ 04 мая 2010

Вы можете использовать read(1) для чтения одного байта. help(file) говорит:

read( размер ) -> чтение не более размер байт, возвращается в виде строки.

Если аргумент size отрицателен или опущен, читайте до достижения EOF. Обратите внимание, что в неблокирующем режиме меньше данных, чем было запрошено может быть возвращено, даже если не указан параметр size .

Обратите внимание, что чтение файла байт за раз совершенно не "Pythonic". Это нормально для курса на C, но Python может выполнять гораздо больше работы с гораздо меньшим количеством кода. Например, вы можете прочитать весь файл в массив в одну строку кода:

lines = f.readlines()

Затем можно получить доступ по номеру строки с помощью простого lines[lineNumber] поиска.

Или, если вы не хотите хранить весь файл в памяти сразу, вы можете перебирать его построчно:

for line in f:
    # Do whatever you want.

Это гораздо более читабельно и идиоматично.

0 голосов
/ 04 мая 2010

Чтобы получить доступ к файлу на основе его строк, составьте список его строк.

with open('myfile') as f:
    lines = list(f)

, затем просто введите lines[3], чтобы получить четвертую строку и так далее. (Обратите внимание, что это не удалит символы новой строки.)

Модуль linecache также может быть полезен для этого.

0 голосов
/ 04 мая 2010

Кажется, самый простой ответ для вас будет сделать:

for line in file:
    lines += 1
    # do whatever else you need to do for each line

Или эквивалентная конструкция, явно использующая readline(). Я не уверен, почему вы хотите посмотреть на каждый символ, когда вы сказали выше, что readline() правильно читает каждую строку в полном объеме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...