Как работать с файлами в Python
Опубликовано: 2022-03-11В любом языке программирования обработка файлов является важным аспектом. Кроме того, Python поддерживает работу с файлами в различных режимах, таких как чтение и запись в файлы и т. д.
К концу этого урока вы сможете:
- открывать и читать файлы в Python,
- читать строки из текстового файла,
- писать и добавлять в файлы, а также
- используйте контекстные менеджеры для работы с файлами в Python.
Как прочитать файл в Python
Чтобы открыть файл в Python, вы можете использовать общий синтаксис: open('file_name','mode')
.
- Здесь
file_name
— это имя файла.
Примечание. Если файл, который вы хотите открыть, находится в текущем рабочем каталоге, вы можете указать только имя файла. Если он находится в другой папке в вашей рабочей среде, вы должны указать путь к файлу.
-
mode
параметра указывает режим, в котором вы хотите открыть файл.
По умолчанию для открытия файла используется режим чтения , обозначаемый буквой
'r'
. Однако рекомендуется указывать режим явно.
Прежде чем мы начнем, давайте взглянем на файл lib.txt
, который мы будем использовать в этом примере.
Загрузите текстовый файл и код, используемые в этом руководстве, из этого репозитория GitHub.

Фрагмент кода ниже показывает, как вы можете открыть текстовый файл 'lib.txt'
в Python с помощью функции open()
и прочитать его содержимое.
file = open('lib.txt','r') contents = file.read() print(contents) file.close() # Output Hello, there! Here are a few helpful Python libraries: 1) NumPy 2) pandas 3) matplotlib 4) seaborn 5) scikit-learn 6) BeautifulSoup 7) Scrapy 8) nltk 9) Bokeh 10) statsmodels
В приведенном выше примере
- Функция
open()
возвращает файловый объект, и мы решили назвать егоfile
. - Затем мы вызываем метод
read()
дляfile
. - Теперь
contents
переменной содержит содержимое файла. И распечатываем. - Наконец, мы закрываем файл.
Однако, если вы забудете закрыть файл, возможна трата ресурсов. Если вы работаете с большим количеством таких файлов, это может привести к значительному использованию памяти. Это потому, что вы открыли несколько файлов, но не закрыли ни один из них.
Теперь давайте узнаем, как лучше открывать файлы с помощью менеджеры контекста. Фрагмент кода ниже показывает, как вы можете их использовать.
with open('lib.txt','r') as f: contents = f.read() print(contents)
При использовании менеджеров контактов для работы с файлами вам не нужно использовать метод close()
. Файлы автоматически закрываются после завершения операции ввода-вывода.
Как читать строки из файла в Python
В нашем примере текстового файла у нас было всего несколько строк. Таким образом, чтение всего содержимого файла одновременно не было проблемой.

Однако, когда вам нужно читать большие файлы, использование метода read()
, как показано выше, может быть не очень эффективным.
На самом деле, если текстовый файл имеет очень большой размер, вам может скоро не хватить памяти. Вот почему вы можете захотеть прочитать строки из текстового файла только для чтения, и в этом разделе вы узнаете, как это сделать.
Использование метода Python readline() для чтения строк из файла
Метод readline()
считывает из файла по одной строке за раз.
Запустите следующий фрагмент кода.
with open('lib.txt','r') as f: line = f.readline() print(line) line = f.readline() print(line) # Output Hello, there! Here are a few helpful Python libraries:
Вы можете видеть, что после первого вызова метода readline()
первая строка файла. И второй вызов метода readline()
возвращает вторую строку в файле.
Это связано с тем, что после вызова первого метода указатель файла находится в начале второй строки.
В Python вы можете использовать метод
tell()
, чтобы получить текущее местоположение указателя файла. А чтобы переместить указатель файла в определенное место, вы можете использовать методseek()
.
В приведенном ниже фрагменте кода мы используем f.seek(0)
после первого вызова метода. Это перемещает указатель файла в начало текстового файла. Вот почему оба раза выводится первая строка в файле.
with open('lib.txt','r') as f: line = f.readline() print(line) f.seek(0) line = f.readline() print(line) # Output Hello, there! Hello, there!
Использование метода Python readlines() для чтения строк из файла
Есть еще один тесно связанный метод, который называется readlines()
.
Когда вы запустите следующий фрагмент кода, вы увидите, что метод readlines()
возвращает список всех строк в файле.
with open('lib.txt','r') as f: lines = f.readlines() print(lines) # Output ['Hello, there!\n', 'Here are a few helpful Python libraries:\n', '1) NumPy\n', '2) pandas\n', '3) matplotlib\n', '4) seaborn\n', '5) scikit-learn\n', '6) BeautifulSoup\n', '7) Scrapy\n', '8) nltk\n', '9) Bokeh\n', '10) statsmodels\n', '\n']
Использование цикла Python for для чтения строк из файла
Чтобы прочитать строки из текстового файла, вы также можете использовать цикл for
.

Когда у вас есть файловый объект, вы можете использовать цикл for
для перебора содержимого файла — по одной строке за раз и вывода их на печать, как показано ниже. Обратите внимание, что мы обращаемся только к одной строке за раз и не читаем содержимое всего файла.
with open('lib.txt','r') as f: for line in f: print(line, end='')
Примечание . При использовании функции Python
print()
разделителем по умолчанию является символ новой строки — символ'\n'
. Но в исходном файле у нас нет этих новых строк. Поэтому задайте в качестве аргумента-разделителя пустую строку:end = ''
, чтобы напечатать содержимое файла как есть.
Как читать фрагменты содержимого из файла в Python
В Python вы также можете выбрать чтение содержимого файла небольшими порциями.
Прочитайте код ниже:
- Здесь мы устанавливаем
chunk_size
на50
. Это означает, что первые 50 символов в файле будут прочитаны, и мы их также распечатаем.
- Теперь вызовите метод
tell()
для файлового объектаf
. Вы можете видеть, что указатель файла теперь находится в позиции 51, как и ожидалось.
chunk_size = 50 with open('lib.txt','r') as f: chunk = f.read(chunk_size) print(chunk) current = f.tell() print(f"Current position of file pointer: {current}") # Output Hello, there! Here are a few helpful Python librar Current position of file pointer: 51
Вы также можете использовать эту технику для чтения всего файла небольшими фрагментами.
В следующем фрагменте кода показано, как это можно сделать.
chunk_size = 50 with open('lib.txt','r') as f: chunk = f.read(chunk_size) print(chunk,end='') while(len(chunk)>0): chunk = f.read(chunk_size) print(chunk,end='') # Output Hello, there! Here are a few helpful Python libraries: 1) NumPy 2) pandas 3) matplotlib 4) seaborn 5) scikit-learn 6) BeautifulSoup 7) Scrapy 8) nltk 9) Bokeh 10) statsmodels
Здесь мы используем цикл while
для чтения содержимого файла. Мы читаем содержимое файла порциями размером 50, пока не достигнем конца файла.
Как записать в файл в Python
Чтобы записать текстовый файл в Python, вы должны открыть его в режиме записи, указав 'w'
.

Фрагмент кода ниже показывает, как это сделать.
with open('new_file.txt','w') as f: f.write('Hello, Python!')
Вы увидите, что 'new_file.txt'
был создан в вашем рабочем каталоге.
Теперь запустите приведенную выше ячейку кода еще раз.
В вашем терминале выполните следующую команду:
cat new_file.txt # Output: Hello, Python!
В идеале мы записали в файл дважды. Итак Hello, Python!
надо было печатать дважды, да?
Но вы увидите, что он был напечатан только один раз. Ну, это потому, что когда вы открываете файл в режиме записи ( w
), вы в основном перезаписываете содержимое файла новым содержимым.
Если вы хотите добавить в конец файла, не перезаписывая существующее содержимое, вам следует открыть файл в режиме добавления . И вы увидите, как это сделать в следующем разделе.
Как добавить файл в Python
Если вы хотите добавить содержимое в файл без перезаписи, откройте его в режиме добавления .
Для этого используйте ` 'a'
— a для добавления — и явно укажите режим.
Затем дважды запустите следующую ячейку кода.
with open('new_file.txt','a') as f: f.write('Hello, Python!')
Обратите внимание, что текст теперь печатается дважды, поскольку мы добавили его в файл.
cat new_file.txt # Output: Hello, Python!Hello, Python!
Вывод
Давайте быстро суммируем то, что мы прошли в этом уроке.
- Вы изучили общие операции ввода-вывода файлов, такие как чтение, запись и добавление в файл.
- Кроме того, вы также узнали, как использовать метод seek() для перемещения указателя файла в определенную позицию и
- как использовать метод tell() для получения текущей позиции указателя файла.
Я надеюсь, что вы нашли этот урок полезным. Теперь, когда вы научились работать с текстовыми файлами в Python, узнайте, как работать с файлами JSON в Python.
Связанный:
Проверьте длину списка в Python за 3 шага.