Базовые переменные Python file-io с перечислением - PullRequest
5 голосов
/ 25 июня 2011

Новичок в Python и попытка изучить веревки файлов ввода / вывода.

Я работаю с вытягиванием строк из большого (2 миллиона строк) файла в следующем формате:

56fr4
4543d
4343d
5irh3

Вот функция, которую я использую для возврата кода:

def getCode(i):
    with open("test.txt") as f:
        for index, line in enumerate(f):
            if index == i:
                code = # what does it equal?
                break
    return code

Как только индекс попадет в нужное место (i), какой синтаксис я буду использовать для установки переменной кода?

Ответы [ 2 ]

11 голосов
/ 25 июня 2011

code = line.strip()

назначит код для номера строки, равного i, при удалении новой строки в конце.

вам также необходимо обновить код немного

 def getCode(i):
    with open('temp.txt', 'r') as f:
             for index, line in enumerate(f):
                     if index == i:
                             code = line.strip()
                             return code

зачем вам нужно .strip()

>>> def getCode(i):
...     with open('temp.txt') as f:
...             for index, line in enumerate(f):
...                     if index == i:
...                             code = line
...                             return code
 ... 
>>> getCode(2)
"                  'LINGUISTIC AFFILIATION',\n"

да, «ЛИНГВИСТИЧЕСКАЯ АФФИЛИАЦИЯ» в моем текущем файле temp.txt '

6 голосов
/ 25 июня 2011

enumerate преобразует один итератор в другой, так что объекты, по которым вы выполняете итерацию, становятся парами (числовой идентификатор, исходный элемент из базового итератора).

В нашем случае:

for index, line in enumerate(f):

f - это объект файла.Файловые объекты являются итераторами: они выполняют итерацию по строкам файла.

Мы преобразуем это в итератор по парам (номер строки, строка из файла).

Синтаксис цикла for выполняет итерацию поитератор, и назначает пару (номер строки, строка из файла) переменным: (индекс, строка).Это обычное поведение при назначении одного кортежа другому.

Таким образом, каждый раз в цикле index присваивается номер строки, а line - соответствующая строка из файла.Строка из файла - это то, что вы хотите (возможно, с некоторым форматированием), и line содержит ее, так что ...

Если что-то из вышеперечисленного не имело смысла, вам, вероятно, придется повторнопрочитайте введение в язык.

...