ПРИМЕЧАНИЕ В системе Windows при отображении путей файлов используется об-
ратный слеш . Но в своем коде вы можете использовать и обычный слеш .
Также можно точно определить местонахождение файла в вашей системе неза-
висимо от того, где хранится выполняемая программа. Такие пути называются
абсолютными и используются в том случае, если относительный путь не работает.
Например, если каталог
text_files
находится не в
python_work
, а в другом каталоге
(скажем, в каталоге с именем
other_files
), то передать
open()
путь
'text_files/
filename.txt'
не получится, потому что Python будет искать указанный каталог
только внутри
python_work
. Чтобы объяснить Python, где следует искать файл, не-
обходимо записать полный путь.
Абсолютные пути обычно длиннее относительных, поэтому их лучше сохранять
в переменных, которые затем передаются
open()
:
file_path = '/home/ehmatthes/other_files/text_files/
имя_файла .txt'
with open(file_path) as file_object:
С абсолютными путями вы сможете читать файлы из любого каталога вашей си-
стемы. Пока будет проще хранить файлы в одном каталоге с файлами программ
или в каталогах, вложенных в каталог с файлами программ (таких, как
text_files
из
рассмотренного примера).
ПРИМЕЧАНИЕ Если вы попытаетесь использовать символ
\
в пути, произойдет
ошибка, потому что этот символ используется для экранирования служебных символов
в строках . Например, в пути
'C:\path\to\file.txt'
последовательность
\t
интерпре-
тируется как символ табуляции . Если вам потребуется включить литерал
\
в строку,
экранируйте каждое вхождение такого символа:
'C:\\path\\to\\file.txt'
.
Чтение по строкам
В процессе чтения файла часто бывает нужно обработать каждую строку. Воз-
можно, вы ищете некую информацию в файле или собираетесь каким-то образом
изменить текст — например, при чтении файла с метеорологическими данными
вы обрабатываете каждую строку, в которой в описании погоды встречается слово
«солнечно». Или, допустим, в новостях вы ищете каждую строку с тегом заголовка
и заменяете ее специальными элементами форматирования.
Для последовательной обработки каждой строки в файле можно воспользоваться
циклом
for
: