Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

Файловый ввод-вывод Python

Файловый ввод-вывод Python

В этом руководстве вы узнаете о файловых операциях Python. В частности, открытие файла, чтение из него, запись в него, закрытие и различные методы работы с файлами, о которых вам следует знать.

Видео:чтение и запись файлов в Python

Файлы

Файлы — это именованные места на диске для хранения связанной информации. Они используются для постоянного хранения данных в энергонезависимой памяти (например, на жестком диске).

Поскольку оперативная память (ОЗУ) энергозависима (данные теряются при выключении компьютера), мы используем файлы для будущего использования данных, сохраняя их постоянно.

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

Следовательно, в Python операции с файлами выполняются в следующем порядке:

  1. Открыть файл
  2. Чтение или запись (выполнение операции)
  3. Закройте файл
<час>

Открытие файлов в Python

Python имеет встроенный open() функция открытия файла. Эта функция возвращает файловый объект, также называемый дескриптором, поскольку он используется для чтения или изменения файла соответствующим образом.

>>> f = open("test.txt")    # open file in current directory
>>> f = open("C:/Python38/README.txt")  # specifying full path

Мы можем указать режим при открытии файла. В режиме мы указываем, хотим ли мы читать r , напишите w или добавьте a в файл. Мы также можем указать, хотим ли мы открыть файл в текстовом или двоичном режиме.

По умолчанию чтение в текстовом режиме. В этом режиме мы получаем строки при чтении из файла.

С другой стороны, двоичный режим возвращает байты, и этот режим следует использовать при работе с нетекстовыми файлами, такими как изображения или исполняемые файлы.

Режим Описание
r Открывает файл для чтения. (по умолчанию)
w Открывает файл для записи. Создает новый файл, если он не существует, или обрезает файл, если он существует.
x Открывает файл для эксклюзивного создания. Если файл уже существует, операция завершается ошибкой.
a Открывает файл для добавления в конец файла без его усечения. Создает новый файл, если он не существует.
t Открывается в текстовом режиме. (по умолчанию)
b Открывается в двоичном режиме.
+ Открывает файл для обновления (чтения и записи)
f = open("test.txt")      # equivalent to 'r' or 'rt'
f = open("test.txt",'w')  # write in text mode
f = open("img.bmp",'r+b') # read and write in binary mode

В отличие от других языков, символ a не подразумевает число 97, пока оно не будет закодировано с использованием ASCII (или другие эквивалентные кодировки).

Более того, кодировка по умолчанию зависит от платформы. В окнах это cp1252 но utf-8 в Linux.

Таким образом, мы не должны также полагаться на кодировку по умолчанию, иначе наш код будет вести себя по-разному на разных платформах.

Поэтому при работе с файлами в текстовом режиме настоятельно рекомендуется указывать тип кодировки.

f = open("test.txt", mode='r', encoding='utf-8')
<час>

Закрытие файлов в Python

Когда мы закончим выполнение операций с файлом, нам нужно правильно закрыть файл.

Закрытие файла освободит ресурсы, которые были связаны с файлом. Это делается с помощью close() метод доступен в Python.

В Python есть сборщик мусора для очистки объектов, на которые нет ссылок, но мы не должны полагаться на него при закрытии файла.

f = open("test.txt", encoding = 'utf-8')
# perform file operations
f.close()

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

Более безопасный способ — использовать блок try...finally.

try:
   f = open("test.txt", encoding = 'utf-8')
   # perform file operations
finally:
   f.close()

Таким образом, мы гарантируем правильное закрытие файла даже в случае возникновения исключения, которое приводит к остановке выполнения программы.

Лучший способ закрыть файл — использовать with утверждение. Это гарантирует, что файл будет закрыт, когда блок внутри with заявление завершено.

Нам не нужно явно вызывать close() метод. Это делается внутри.

with open("test.txt", encoding = 'utf-8') as f:
   # perform file operations
<час>

Запись в файлы в Python

Чтобы записать в файл на Python, нам нужно открыть его в записи w , добавьте a или эксклюзивное создание x режим.

Нам нужно быть осторожными с w режиме, так как он будет перезаписан в файл, если он уже существует. Благодаря этому все предыдущие данные стираются.

Запись строки или последовательности байтов (для бинарных файлов) осуществляется с помощью write() метод. Этот метод возвращает количество символов, записанных в файл.

with open("test.txt",'w',encoding = 'utf-8') as f:
   f.write("my first file\n")
   f.write("This file\n\n")
   f.write("contains three lines\n")

Эта программа создаст новый файл с именем test.txt. в текущем каталоге, если он не существует. Если он существует, он перезаписывается.

Мы должны сами включать символы новой строки, чтобы различать разные строки.

<час>

Чтение файлов в Python

Чтобы прочитать файл в Python, мы должны открыть файл при чтении r режим.

Для этой цели доступны различные методы. Мы можем использовать read(size) метод для чтения в size количество данных. Если размер параметр не указан, он читает и возвращает до конца файла.

Мы можем прочитать text.txt файл, который мы написали в предыдущем разделе, следующим образом:

>>> f = open("test.txt",'r',encoding = 'utf-8')
>>> f.read(4)    # read the first 4 data
'This'

>>> f.read(4)    # read the next 4 data
' is '

>>> f.read()     # read in the rest till end of file
'my first file\nThis file\ncontains three lines\n'

>>> f.read()  # further reading returns empty sting
''

Мы видим, что read() метод возвращает новую строку как '\n' . Как только будет достигнут конец файла, при дальнейшем чтении мы получим пустую строку.

Мы можем изменить текущий файловый курсор (положение), используя seek() метод. Точно так же tell() Метод возвращает нашу текущую позицию (в байтах).

>>> f.tell()    # get the current file position
56

>>> f.seek(0)   # bring file cursor to initial position
0

>>> print(f.read())  # read the entire file
This is my first file
This file
contains three lines

Мы можем читать файл построчно, используя цикл for. Это эффективно и быстро.

>>> for line in f:
...     print(line, end = '')
...
This is my first file
This file
contains three lines

В этой программе строки в самом файле включают символ новой строки \n . Итак, мы используем конечный параметр print() функция, позволяющая избежать двух новых строк при печати.

В качестве альтернативы мы можем использовать readline() метод для чтения отдельных строк файла. Этот метод читает файл до новой строки, включая символ новой строки.

>>> f.readline()
'This is my first file\n'

>>> f.readline()
'This file\n'

>>> f.readline()
'contains three lines\n'

>>> f.readline()
''

Наконец, readlines() Метод возвращает список оставшихся строк всего файла. Все эти методы чтения возвращают пустые значения при достижении конца файла (EOF).

>>> f.readlines()
['This is my first file\n', 'This file\n', 'contains three lines\n']
<час>

Методы файла Python

Существуют различные методы, доступные с файловым объектом. Некоторые из них использовались в приведенных выше примерах.

Вот полный список методов в текстовом режиме с кратким описанием:

Метод Описание
закрыть() Закрывает открытый файл. Это не действует, если файл уже закрыт.
отсоединить() Отделяет базовый двоичный буфер от TextIOBase и возвращает его.
fileno() Возвращает целое число (файловый дескриптор) файла.
сброс() Очищает буфер записи файлового потока.
isatty() Возвращает True если файловый поток является интерактивным.
чтение(n ) Читает не более n символов из файла. Читает до конца файла, если он отрицательный или None .
читаемый() Возвращает True если файловый поток может быть прочитан.
readline(n =-1) Читает и возвращает одну строку из файла. Считывает не более n байт, если указано.
readlines(n =-1) Читает и возвращает список строк из файла. Считывает не более n байты/символы, если они указаны.
seek(смещение ,от =SEEK_SET ) Изменяет положение файла на смещение байт по отношению к from (начало, текущий, конец).
поиск() Возвращает True если файловый поток поддерживает произвольный доступ.
рассказать() Возвращает текущее местоположение файла.
усекать(размер =None ) Изменяет размер файлового потока до size байт. Если размер не указан, изменяет размер до текущего местоположения.
доступно для записи() Возвращает True если файловый поток может быть записан.
написать(s ) Записывает строку s в файл и возвращает количество записанных символов.
линии записи(строки ) Записывает список строк в файл.

Python

  1. C Вход Выход (ввод/вывод)
  2. Типы данных Python
  3. Операторы Python
  4. Словарь Питона
  5. Файловый ввод-вывод Python
  6. Python Проверить, существует ли файл | Как проверить, существует ли каталог в Python
  7. Python JSON:кодировать (дампы), декодировать (загружать) и читать файл JSON
  8. C - файловый ввод/вывод
  9. С# — файловый ввод-вывод
  10. Python — файловый ввод-вывод