Output file encoding in Python 3
pythonHow to specify which Unicode encoding to use for reading or writing text files in Python 3.
Unicode is very widespread now (for good reason), and one of the great benefits of Python 3.x is that it handles Unicode natively. There are different ways to represent Unicode though, so how do you set the file encoding in Python when you’re writing out to file?
It’s not immediately obvious from some of the official documentation, but thankfully it’s not complicated. I’ll give a quick overview in this post.
open() function
When you’re opening a text file for input or output you’ll typically use the open() function. It returns a file object. Here’s the function signature:
open(file, mode="r", buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
The 4th parameter specifies the encoding. By default, it’s set to None
which means it will use the system’s preferred encoding.
f = open("hello.txt", "w", encoding="utf-8") f.write("Привет мир")
That opens a file called hello.txt
and writes something like “Hello world” in Russian (I used Google translate so I’m sorry if it means something else!). For that to work properly in a script, make sure the script itself is saved with UTF-8 encoding.
As a side note, you can see that I’m using a named argument to skip the 3rd parameter of the open()
function. This is a helpful feature of Python to be aware of.
Available encodings
The encoding argument for open() can be any of the following:
utf-8
utf-16
utf-32
utf-16-be
utf-16-le
utf-32-be
utf-32-le
The be
and le
suffixes stand for “big endian” and “little endian”. This determines the way a system stores units of data which are bigger than one byte (see the endianness article on Wikipedia for more information). If you select the utf-16
or utf-32
encoding without an endian suffix then Python will use the system’s native endianness.
Which encoding to use?
Generally speaking, UTF-8 seems to be the most widely used and the most portable choice, plus it doesn’t care about endianness (one less problem to worry about!). I would recommend against using UTF-16 or UTF-32 unless you have a specific reason, e.g. for interacting with another program which requires it.
Further reading
- Python 3 – Unicode HOWTO
- Unicode FAQ
Как открыть и закрыть файл в Python
Может возникнуть ситуация, когда нужно взаимодействовать с внешними файлами с помощью Python. Python предоставляет встроенные функции для создания, записи и чтения файлов. В этой статье мы обсудим, как открыть внешний файл и закрыть его с помощью Python.
Открытие файла в PythonСуществует два типа файлов, которые можно обрабатывать в Python: обычные текстовые файлы и двоичные файлы (написанные на двоичном языке, 0 и 1). Открытие файла относится к подготовке файла либо к чтению, либо к записи. Это можно сделать с помощью функция open() . Эта функция возвращает файловый объект и принимает два аргумента, один из которых принимает имя файла, а другой принимает режим (режим доступа).
Примечание: Файл должен находиться в том же каталоге, что и скрипт Python, в противном случае необходимо записать полный адрес файла.
Синтаксис: File_object = open(«File_Name», «Access_Mode»)
Параметры:
- File_Name: Это имя файла, который необходимо открыть.
- Access_Mode: Режимы доступа определяют тип операций, возможных в открытом файле. В таблице ниже приведены список всего режима доступа, доступного в Python
Операция | Синтаксис | Описание |
---|---|---|
только чтение | R | |
Чтение и запись | r+ | Открыть файл для чтения и записи. |
Только запись | w | Открыть файл для записи. |
Запись и чтение | w+ | Открыть файл для чтения и записи. В отличие от «r+», это не вызывает ошибку ввода-вывода, если файл не существует. |
Добавить только | a | Открыть файл для записи и создать новый файл, если он не существует. Все дополнения делаются в конце файла, и никакие существующие данные не могут быть изменены. |
Добавить и прочитать | a+ | Открыть файл для чтения и записи и создать новый файл, если он не существует. Все дополнения делаются в конце файла, и никакие существующие данные не могут быть изменены. |
В этом примере мы будем открывать файл только для чтения. Исходный файл выглядит следующим образом:
Код:
Python3
|
Здесь мы открыли файл и распечатали его содержимое.
Вывод:
Привет, Компьютерщик! Это образец текстового файла для примера.Пример 2: Открытие и запись в файл с помощью Python
В этом примере мы будем добавлять новое содержимое к существующему файлу. So the initial file looks like the below:
Code:
Python3
|
Теперь, если вы откроете файл, вы увидите приведенный ниже результат,
Выход:
Пример 3: Открыть и перевернуть файл Pythonв этом примере 3: . , мы перезапишем содержимое файла примера следующим кодом:
Код:
Python3
|
Приведенный выше код приводит к следующему результату:
Вывод:
Пример 4. Создание файла, если он не существует в Python
Метод path.touch() модуля pathlib создает файл в путь, указанный в пути path.touch().
Python3
| 1
|
Now if we try to perform any operation on a closed file like shown below возникает ошибка ValueError:
Python3
|
Вывод:
ValueError: Операция ввода/вывода в закрытом файле.
Создание, открытие, добавление, чтение, запись {+Примеры}
Введение
Работа с файлами является неотъемлемой частью программирования. Обработка файлов в Python упрощается благодаря встроенным методам, включающим создание, открытие и закрытие файлов.
Пока файлы открыты, Python дополнительно позволяет выполнять различные операции с файлами, такие как чтение, запись и добавление информации.
В этой статье вы узнаете, как работать с файлами в Python.
Предварительные условия
- Python 3 установлен и настроен.
- IDE или редактор кода для написания кода.
- Доступ к терминалу для запуска кода (или запуска непосредственно в IDE).
- Текстовый файл для примеров.
Открытие файлов в Python
open()
Метод Python является основной функцией обработки файлов. Основной синтаксис:
file_object = open('file_name', 'mode')
open()
Функция принимает два элементарных параметра для обработки файла:
1. file_name
включает расширение файла файл находится в текущем рабочем каталоге. Если расположение файла находится в другом месте, укажите абсолютный или относительный путь.
2. Режим
— необязательный параметр, определяющий способ открытия файла. В таблице ниже представлены различные возможные варианты:
Режим | Описание |
---|---|
'r' | считывает из файла и возвращает ошибку, если файл не существует ( ). |
'w' | Записывает в файл и создает файл, если он не существует, или перезаписывает существующий файл. |
'x' | Эксклюзивное создание, которое завершается ошибкой, если файл уже существует. |
'a' | Добавляет к файлу и создает файл, если он не существует, или перезаписывает существующий файл. |
'b' | Двоичный режим. Используйте этот режим для нетекстовых файлов, таких как изображения. |
't' | Текстовый режим. Использовать только для текстовых файлов ( по умолчанию ). |
'+' | Активирует методы чтения и записи. |
Режим должен иметь ровно одно создание ( x
)/Read ( R
)/Запись ( W
)/Приложение ( A
). один +
. Если этот режим не указан, по умолчанию используется значение 'rt'
для чтения текстовых файлов.
Ниже приведена таблица, описывающая поведение каждого из режимов при вызове.
Behavior | Modes | |
---|---|---|
Read | r , r+ , w+ , a+ , x+ | |
Write | R+ , W , W+ , A , A+ , x+ 1120 , x+ 120528 Create | w , w+ , a , a+ , x , x+ |
Pointer Position Start | R , R+ , W , W+ , x , x+ | , |
a , a+ | ||
Truncate (clear contents) | w , w+ | |
Must Exist | r , R+ | |
Не должен существовать | x , x+ |
. начало файла.
Примечание: Если файл не существует, Python выдает ошибку.
Чтобы прочитать текстовый файл в Python, загрузите файл с помощью функции open()
:
f = open("<имя файла>")
По умолчанию режим чтения текста ( ' рт'
). Таким образом, следующий метод эквивалентен методу по умолчанию:
f = open("<имя файла>", "rt")
Для чтения файлов в двоичном режиме используйте:
f = open("<имя файла> ","рб")
Добавьте +
, чтобы открыть файл в режиме чтения и записи:
f = open("<имя файла>", "r+") # Текстовое чтение и запись
f = open("<имя файла >", "rt+") # То же, что и выше
f = open("<имя файла>", "rb+") # Двоичное чтение и запись
Во всех случаях функция возвращает файловый объект, а характеристики зависят от выбранный режим.
Режим записи
Режим записи создает файл для записи содержимого и помещает указатель в начало. Если файл существует, запись усекает (удаляет) любую существующую информацию.
Предупреждение: Режим записи удаляет существующее содержимое немедленно . Проверьте, существует ли файл, прежде чем случайно перезаписать информацию.
Чтобы открыть файл для записи информации, используйте:
f = open("<имя файла>", "w")
Режим по умолчанию — текстовый, поэтому следующая строка эквивалентна режиму по умолчанию:
f = open("<имя файла>", "wt")
Для записи в двоичном режиме откройте файл командой:
f = open("<имя файла>", "wb")
Добавьте +
, чтобы разрешить чтение файла:
f = open("<имя файла>", "w+") # Текстовая запись и чтение
f = open("<имя файла>", " wt+") # То же, что и выше
f = open("<имя файла>", "wb+") # Двоичная запись и чтение
Функция open()
возвращает файловый объект, детали которого зависят от выбранного режимы.
Режим добавления
Режим добавления добавляет информацию в существующий файл, помещая указатель в конец. Если файл не существует, режим добавления создает файл.
Примечание: Основное различие между режимами записи и добавления заключается в том, что добавление не очищает содержимое файла.
Используйте одну из следующих строк, чтобы открыть файл в режиме добавления:
f = open("<имя файла>", "a") # Добавление текста
f = open("<имя файла>", " at") # То же, что и выше
f = open("<имя файла>", "ab") # Двоичное добавление
Добавьте знак +
, чтобы включить функцию чтения.
Режим создания
Режим создания (также известный как монопольное создание) создает файл, только если он не существует, устанавливая указатель в начало файла.
Примечание: Если файл существует, Python выдает ошибку. Используйте этот режим, чтобы избежать перезаписи существующих файлов.
Используйте одну из следующих строк, чтобы открыть файл в режиме создания:
f = open("<имя файла>", "x") # Text create
f = open("<имя файла>", " xt") # То же, что и выше
f = open("<имя файла>", "xb") # Создание двоичного файла
Добавьте знак +
в режим включения функции чтения в любую из вышеперечисленных строк.
Чтение файлов в Python
После импорта файла в объект Python предлагает множество методов для чтения содержимого.
Используйте метод read()
для файлового объекта и распечатайте результат. Например:
f = открыть("file.txt") print(f.read(),end="")
Примечание: print() 9Функция 0121
автоматически добавляет новую пустую строку. Чтобы изменить это поведение, добавьте параметр end=""
к print()
, чтобы удалить пустую строку.
Код печатает содержимое текстового файла.
Чтение частей файла
Укажите номер функции read()
для чтения только указанного количества символов:
f = open("file.txt") print(f.read(5))
Вывод печатает первые пять символов в файле.
В качестве альтернативы используйте метод readline()
для печати только первой строки файла:
f = open("file. txt") print(f.readline())
Добавьте целое число к функции readline()
Чтение строк
Для чтения строк и перебора содержимого файла используйте цикл for
:
f = open("file.txt") для строки в f: печать (строка, конец = "")
В качестве альтернативы используйте метод readlines()
для файлового объекта:
f = open("file.txt") print(f.readlines())
Функция возвращает список строк из файлового потока.
Добавьте целое число к функции readlines()
для управления количеством строк. Например:
f = открыть("file.txt") print(f.readlines(15))
Целое число представляет номер символа, и функция возвращает строку, где заканчивается символ, вместе с предыдущими строками.
Закрыть файлы
Файл остается открытым до вызова функции close()
.
Чтобы закрыть файл, запустите метод close()
для файлового объекта:
f.close()
Альтернативный способ обеспечить закрытие файла — использовать оператор с оператором
. Например:
с open("<имя файла>"): file_contents = f.read() # Дополнительный код здесь
Оператор with
автоматически закрывает файл.
Удаление файлов в Python
Для удаления файлов в Python требуется установить связь с операционной системой. Импортируйте библиотеку os
и удалите файл со следующим:
import os os.remove("file.txt")
Файл больше не доступен. Если файл не существует, Python выдает ошибку.
Файловые методы Python
Python предлагает различные другие функции при работе с файловыми объектами. Ниже приведена таблица, в которой перечислены все доступные процессы и то, что они делают.
Метод | Описание |
---|---|
close() | Сбрасывает и закрывает объект файла. |
detach() | Отделяет буфер от текстового потока и возвращает буфер. |
fileno() | Возвращает дескриптор файла, если он доступен. |
flush() | Сбрасывает буфер записи. Недоступно для объектов только для чтения. |
isatty() | Проверяет, является ли файловый поток интерактивным. |
read( | Read Максимальное количество символов. |
readable() | Проверяет, доступен ли объект для чтения. |
readline( | Читает из объекта до новой строки или конца файла. |
readlines( | Возвращает список строк из файлового объекта, где — приблизительное количество символов. |
seek(<смещение>, <позиция>) | Изменяет позицию указателя на <смещение> относительно <позиция> . |
seekable() | Проверяет, поддерживает ли файловый объект произвольный доступ. |
tell() | Выводит текущую позицию потока. Оставить комментарий
|