Я пытаюсь сделать некоторые манипуляции с текстом в Python и сталкиваюсь с множеством проблем, главным образом из-за фундаментального непонимания того, как работает манипуляция с файлами на Python, поэтому я надеюсь это прояснить.Понимание итерации файлов в Python
Так позволяет сказать, что я итерацию через текстовый файл с именем «my.txt» и имеет следующее содержание:
3 10 7 8
2 9 8 3
4 1 4 2
код я использую перебирать файл:
file = open ("my.txt", 'r')
for line in file:
print line`
Я скопировал и вставил вышеуказанный код из учебника. Я знаю, что он делает, но я не знаю, почему это работает, и это меня беспокоит. Я пытаюсь понять, что представляет собой переменная «строка» в файле. Это тип данных (строка?) Или что-то еще. Мой инстинкт подсказывает мне, что каждая строка представляет собой строку, которую можно было бы манипулировать (это то, что я хочу), но я также понимаю, что строки неизменяемы в Python.
Какую роль играет память во всем этом, если мой файл слишком велик, чтобы вписаться в память, будет ли он работать? Будет ли строка [3] позволять мне получить доступ к четвертому элементу в каждой строке? Если я только хочу работать на второй линии я могу сделать:
if line == 2:
внутри для цикла?
Возможно, стоит отметить, что я довольно новичок в Python и исхожу из фона C \ C++ (не используется для неизменяемых строк). Я знаю, что я втиснул несколько вопросов в один, но любое разъяснение по общей теме было бы действительно полезно :)
Я считаю, что вы должны прочитать [Python Tutorial] (http://docs.python.org/2/tutorial/controlflow.html#for- заявления). 'line' - это, как вы думали, строка. В частности, это «строка», то есть на каждой итерационной строке «строка» присваивается целая строка в файле. Строки неизменны в python (как и на большинстве других языков), но они предоставляют множество методов для их управления (создания новых строк). Что касается памяти: итерация по файлу * не * чтение всего файла в память. Он считывается кусками (избегая как слишком большого потребления памяти, так и слишком низких характеристик). – Bakuriu
Если вы хотите иметь как содержимое строки, так и номер строки, вы можете использовать 'enumerate':' для индекса, строка в enumerate (file_object) 'Это будет присвоить' index = 0' первой строке, а затем 'index = 1' и т. Д. (Синтаксис 'a, b, c, d, e в iterable' называется tuple-распаковкой, о котором стоит прочитать, поскольку он используется много). – Bakuriu
Обратите внимание, что при работе с файлами в Python вы всегда должны использовать [инструкцию 'with'] (http://www.youtube.com/watch?v=lRaKmobSXF4). –