python textiowrapper io что это

Модуль io, операции ввода/вывода в Python.

Ввод/вывод текста, двоичных и необработанных потоков.

Независимо от своей категории каждый конкретный объект потока также будет иметь различные возможности: он может быть доступен только для чтения, только для записи или для чтения и записи. Он также может разрешать произвольный произвольный доступ (поиск вперед или назад в любом месте) или только последовательный доступ в случае сокета или канала.

Содержание:

Текстовые потоки в памяти также доступны в виде объектов io.StringIO :

Двоичные потоки в памяти также доступны в виде объектов io.BytesIO :

Необработанный ввод/вывод, также называемый небуферизованным вводом/выводом обычно используется как низкоуровневый строительный блок для двоичных и текстовых потоков. Очень редко встречается необходимость напрямую манипулировать необработанным потоком из пользовательского кода. Тем не менее, вы можете создать необработанный поток, открыв файл в двоичном режиме mode=’rb’ с отключенной буферизацией buffering=0 :

Кодировка текста.

Кодировка по умолчанию для io.TextIOWrapper и встроенной функции open() зависит от локали ( locale.getpreferredencoding (False)).

Многие разработчики не указывают кодировку при открытии текстовых файлов, закодированных в UTF-8 (например, JSON, TOML, Markdown и т. д.), так как в Unix по умолчанию используют локаль UTF-8. НО, для большинства пользователей Windows, это вызывает ошибки, так как кодировка локали не является UTF-8. Например:

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

Если нужно запустить существующий код в Windows, который пытается открыть файлы UTF-8 с использованием кодировки локали по умолчанию, то можно включить режим UTF-8.

Новое в Python 3.10

Для новых API, необходимо рассматривать возможность использования UTF-8 по умолчанию (т.е. encoding=’utf-8′ ).

Источник

io — Основные инструменты для работы с потоками¶

Исходный код: Lib/io.py

Обзор¶

Независимо от своей категории, у каждого конкретного объекта потока также будут различные возможности: он может быть доступен только для чтения, только для записи или чтения-записи. Он также может разрешать произвольный произвольный доступ (поиск вперед или назад в любое место) или только последовательный доступ (например, в случае сокета или канала (pipe)).

Текстовый ввод/вывод¶

Текстовые потоки в памяти также доступны как объекты StringIO :

Двоичный ввод/вывод¶

Двоичный ввод-вывод (также называемый буферизованный I/O) ожидает байтовые объекты и производит bytes объекты. Кодирование, декодирование или перевод новой строки не выполняется. Данная категория потоков может использоваться для всех видов нетекстовых данных, а также когда требуется ручное управление обработкой текстовых данных.

Самый простой способ создать двоичный поток — использовать open() с ‘b’ в строке режима:

Двоичные потоки в памяти также доступны как объекты BytesIO :

Необработанный ввод-вывод¶

Необработанный ввод-вывод (также называемый небуферизованный I/O) обычно используется в качестве низкоуровневого строительного блока для двоичных и текстовых потоков; редко бывает полезно напрямую управлять необработанным потоком из пользовательского кода. Тем не менее, вы можете создать необработанный поток, открыв файл в двоичном режиме с отключенной буферизацией:

Интерфейс модуля высокого уровня¶

Тип int, содержащий размер буфера по умолчанию, используемый классами буферизованного ввода-вывода модуля. open() использует размер файла blksize (полученный os.stat() ), если это возможно.

io. open_code ( path ) ¶

path должен быть str и абсолютным путём.

Добавлено в версии 3.8.

exception io. UnsupportedOperation ¶

Потоки в памяти¶

Также можно использовать str или байтовый объект в качестве файла как для чтения, так и для записи. Для строк StringIO может использоваться как файл, открытый в текстовом режиме. BytesIO можно использовать как файл, открытый в двоичном режиме. Оба предоставляют полные возможности чтения-записи с произвольным доступом.

Иерархия классов¶

Реализация потоков ввода-вывода организована в виде иерархии классов. Сначала абстрактные базовые классы (ABC), которые используются для определения различных категорий потоков, затем конкретные классы, обеспечивающие стандартные реализации потоков.

Имена аргументов не являются частью спецификации, и только аргументы open() предназначены для использования в качестве ключевых аргументов.

В следующей таблице приведены ABC, предоставляемые модулем io :

Базовые классы ввода-вывода¶

Абстрактный базовый класс для всех классов ввода-вывода, воздействующий на потоки байтов. Общедоступного конструктора нет.

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

IOBase (и его подклассы) поддерживает протокол итератора, что означает, что объект IOBase может быть повторен, отдавая строки в потоке. Строки определяются немного по-разному в зависимости от того, является ли поток двоичным потоком (дающим байты) или текстовым потоком (дающим символьные строки). См. readline() ниже.

IOBase предоставляет следующие атрибуты данных и методы:

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

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

Прочитать и вернуть одну строку из потока. Если указан size, будет прочитано не более size байтов.

Для двоичных файлов терминатор строки всегда b’\n’ ; для текстовых файлов аргумент newline для open() может использоваться для выбора распознаваемых ограничителей строки.

Прочитать и вернуть список строк из потока. hint можно указать для управления количеством прочитанных строк: больше не будут считываться строки, если общий размер (в байтах/символах) всех строк на данный момент превышает hint.

seek ( offset, whence=SEEK_SET ) ¶

Возвращает новую абсолютную позицию.

Возвращает текущую позицию потока.

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

Изменено в версии 3.5: Windows теперь будет заполнять файлы нулями при расширении.

Записать список строк в поток. Разделители строк не добавляются, поэтому обычно у каждой из предоставленных строк есть разделитель строк в конце.

class io. RawIOBase ¶

Необработанный двоичный ввод-вывод обычно предоставляет низкоуровневый доступ к базовому устройству ОС или API и не пытается инкапсулировать его в высокоуровневые примитивы (оставлено для буферизованного ввода-вывода и текстового ввода-вывода, описанного ниже на этой странице).

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

class io. BufferedIOBase ¶

BufferedIOBase предоставляет или переопределяет данные методы и атрибуты в дополнение к тем из IOBase :

Отделить базовый необработанный поток от буфера и вернуть его.

После отсоединения необработанного потока буфер находится в непригодном для использования состоянии.

Добавлено в версии 3.1.

Чтение и возвращение до size байт. Если аргумент пропущен, None или отрицательный, данные считываются и возвращаются до достижения EOF. Пустой объект bytes возвращается, если поток уже находится в EOF.

Если аргумент положительный, а базовый необработанный поток не является интерактивным, может быть выполнено несколько необработанных чтений, чтобы удовлетворить счетчику байтов (если EOF не будет достигнут первым). Но для интерактивных необработанных потоков будет выполнено не более одного необработанного чтения, и короткий результат не означает, что EOF неизбежен.

BlockingIOError возникает, если базовый необработанный поток находится в неблокирующем режиме и в настоящий момент нет доступных данных.

BlockingIOError возникает, если базовый необработанный поток находится в неблокирующем режиме и в данный момент нет доступных данных.

Прочитать байты в предварительно выделенный, доступный для записи байтового объекта b, используя не более одного вызова метода read() (или readinto() ) базового необработанного потока. Возвращает количество прочитанных байтов.

BlockingIOError возникает, если базовый необработанный поток находится в неблокирующем режиме и в настоящий момент нет доступных данных.

Добавлено в версии 3.5.

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

Ввод-вывод необработанных файлов¶

FileIO представляет собой файл уровня ОС, содержащий данные в байтах. Он реализует интерфейс RawIOBase (и, следовательно, интерфейс IOBase ).

name может быть одним из двух:

Методы read() (при вызове с положительным аргументом), readinto() и write() этого класса будут выполнять только один системный вызов.

Можно использовать настраиваемый открыватель, передав вызываемый объект как opener. Базовый файловый дескриптор для файлового объекта получается путём вызова opener с (name, flags). opener должен возвращать дескриптор открытого файла (передача os.open как opener приводит к функциональности, аналогичной передаче None ).

См. встроенную функцию open() для примеров использования параметра opener.

Изменено в версии 3.4: Теперь файл не наследуется.

Режим, указанный в конструкторе.

Имя файла. Файловый дескриптор файла, если в конструкторе не указано имя.

Буферизованные потоки¶

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

class io. BytesIO ( [ initial_bytes ] ) ¶

BytesIO предоставляет или отменяет данные методы в дополнение к методам из BufferedIOBase и IOBase :

Возвращает доступное для чтения и записи представление содержимого буфера без его копирования. Кроме того, изменение представления прозрачно обновит содержимое буфера:

Добавлено в версии 3.2.

Изменено в версии 3.7: Аргумент size теперь необязателен.

Добавлено в версии 3.5.

BufferedReader предоставляет или отменяет эти методы в дополнение к методам из BufferedIOBase и IOBase :

Возврат байтов из потока без продвижения позиции. Для удовлетворения запроса выполняется не более одного однократного чтения необработанного потока. Количество возвращенных байтов может быть меньше или больше запрошенного.

Прочитать и вернуть size байтов, или, если size не задано или отрицательно, до EOF или если вызов чтения блокируется в неблокирующем режиме.

Чтение и возврат до size байтов только с одним вызовом необработанного потока. Если в буфере находится хотя бы один байт, возвращаются только буферизованные байты. В противном случае выполняется один вызов чтения необработанного потока.

Изменено в версии 3.7: Аргумент size теперь необязателен.

BufferedWriter предоставляет или отменяет данные методы в дополнение к методам из BufferedIOBase и IOBase :

class io. BufferedRandom ( raw, buffer_size=DEFAULT_BUFFER_SIZE ) ¶

class io. BufferedRWPair ( reader, writer, buffer_size=DEFAULT_BUFFER_SIZE ) ¶

Текстовый ввод/вывод¶

TextIOBase предоставляет или отменяет эти атрибуты данных и методы в дополнение к атрибутам из IOBase :

Имя кодировки, используемой для декодирования байтов потока в строки и для кодирования строк в байты.

Ошибка настройки декодера или кодировщика.

Отделить нижележащий двоичный буфер от TextIOBase и вернуть его.

После отсоединения нижележащего буфера TextIOBase находится в непригодном для использования состоянии.

Добавлено в версии 3.1.

Если указан size, будет прочитано не более size символов.

seek ( offset, whence=SEEK_SET ) ¶

Возвращает новую абсолютную позицию как непрозрачное число.

Возвращает текущую позицию в потоке как непрозрачное число. Число обычно не представляет собой количество байтов в базовом двоичном хранилище.

Записать в поток строку s и вернуть количество записанных символов.

class io. TextIOWrapper ( buffer, encoding=None, errors=None, newline=None, line_buffering=False, write_through=False ) ¶

Изменено в версии 3.3: Добавлен аргумент write_through.

TextIOWrapper предоставляет ряд атрибутов в дополнение к атрибутам TextIOBase и его родителям:

Включена ли буферизация строки.

Передаются ли записи немедленно в базовый двоичный буфер.

Добавлено в версии 3.7.

Изменить конфигурацию текстового потока, используя новые настройки для encoding, errors, newline, line_buffering и write_through.

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

Метод выполняет неявную очистку потока перед установкой новых параметров.

Добавлено в версии 3.7.

StringIO предоставляет следующий метод в дополнение к методам из TextIOBase и его родителей:

Производительность¶

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

Двоичный ввод/вывод¶

За счёт чтения и записи только больших блоков данных, даже когда пользователь запрашивает один байт, буферизованный ввод-вывод скрывает любую неэффективность при вызове и выполнении небуферизованных процедур ввода-вывода операционной системы. Прирост зависит от ОС и типа выполняемого ввода-вывода. Например, в некоторых современных ОС, таких как Linux, небуферизованный дисковый ввод-вывод может быть таким же быстрым, как и буферизованный ввод-вывод. Суть в том, что буферизованный ввод-вывод обеспечивает предсказуемую производительность независимо от платформы и устройства поддержки. Следовательно, почти всегда предпочтительнее использовать буферизованный ввод-вывод, а не небуферизованный ввод-вывод для двоичных данных.

Текстовый ввод/вывод¶

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

Многопоточность¶

Объекты FileIO являются потокобезопасными в той степени, в которой вызовы операционной системы (например, read(2) в Unix), которые их обёртывают, также являются потокобезопасными.

Объекты TextIOWrapper не являются потокобезопасными.

Реентерабельность¶

Источник

Основы работы с файлами в Python

python textiowrapper io что это. Смотреть фото python textiowrapper io что это. Смотреть картинку python textiowrapper io что это. Картинка про python textiowrapper io что это. Фото python textiowrapper io что это

автор курса «Full-stack веб-разработчик на Python»

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

Встроенные средства Python

Основа для работы с файлами — built-in функция open()

python textiowrapper io что это. Смотреть фото python textiowrapper io что это. Смотреть картинку python textiowrapper io что это. Картинка про python textiowrapper io что это. Фото python textiowrapper io что это

Эти режимы могут быть скомбинированы. Например, «rb» открывает двоичный файл для чтения. Комбинируя «r+» или «w+» можно добиться открытия файла в режиме и чтения, и записи одновременно с одним отличием — первый режим вызовет исключение, если файла не существует, а работа во втором режиме в таком случае создаст его.

По завершении работы с файлом его необходимо закрыть при помощи метода close()

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

Чтение из файла

При открытии файла в режимах, допускающих чтение, можно использовать несколько подходов.

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

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

Однако и здесь существует более pythonic way. Он заключается в том, что сам объект io.TextIOWrapper имеет итератор, возвращающий строку за строкой. Благодаря этому нет необходимости считывать файл целиком, сохраняя его в список, а можно динамически по строкам считывать файл. И делать это лаконично.

Запись в файл

Функциональность внесения данных в файл не зависит от режима — добавление данных или перезаписывание файла. В выполнении этой операции также существует несколько подходов.

Самый простой и логичный — использование функции write()

Важно, что в качестве аргумента функции могут быть переданы только строки. Если необходимо записать другого рода информацию, то ее необходимо явно привести к строковому типу, используя методы __str__(self) для объектов или форматированные строки.

Есть возможность записать в файл большой объем данных, если он может быть представлен в виде списка строк.

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

Сила такого подхода заключается в том, что в print() можно передавать не обязательно строковые аргументы — при необходимости функция сама их преобразует к строковому типу.

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

Источник

File Handling in Python

Last updated on July 27, 2020

So far in this course, we have been using variables to store data. The problem with this approach is that as soon as program ends our data is lost. One way to store the data permanently is to put it in a file. This chapter discusses how we can store data in the file as well as read data from the file.

In Python, File Handling consists of following three steps:

Types of File #

There are two types of files:

A file whose contents can be viewed using a text editor is called a text file. A text file is simply a sequence of ASCII or Unicode characters. Python programs, HTML source code are some of the example of text files.

A binary file stores the data in the same way as as stored in the memory. The mp3 files, image files, word documents are some of the examples of binary files. You can’t read a binary file using a text editor.

In this lesson we will discuss how to work with both types of files.

Opening a File #

Before you perform any operation on a file, you must the open it. Python provides a function called fopen() to open a file. It’s syntax is:

The filename is the name or path of the file.

The mode is a string which specifies the type operation you want to perform on the file (i.e read, write, append, etc).The following table lists different modes available to you.

ModeDescription
«r»Opens the file for reading. If the file doesn’t already exists you will get FileNotFoundError error.
«w»Opens the file for writing. In this mode, if file specified doesn’t exists, it will be created. If the file exists, then it’s data is destroyed.
«a»Opens the file in append mode. If the file doesn’t exists this mode will create the file. If the file already exists then it appends new data to the end of the file rather than destroying data as «w» mode does.

We can also specify the type of file (i.e text file or binary file.) we want to work with in mode string by appending ‘t’ for text files and ‘b’ for binary files. But since text mode is default mode, it is generally omitted while opening files in text mode.

On success, open() returns a file object which is associated with the filename specified while calling it.

Here are some examples of how to open a file:

Example 1:

This statement opens the text file employees.txt for reading. Since text mode is default, the above statement can also be written as:

Example 2:

This statement opens the text file in write mode.

Example 3:

This statement opens the binary file in write mode.

Example 4:

This statement opens the binary file in append mode.

Instead of using relative file paths we can also use absolute file paths. For example:

This statements opens the text file README.md that is in /home/tom/documents/ directory in write mode.

In Windows, remember to escape backslashes while using absolute path names, Otherwise, you will get an error. For example:

We can also use something called «raw string» by specifying r character in front of the string as follows:

The r character causes the Python to treat every character in string as literal characters.

Closing the File #

Once we are done working with the file or we want to open the file in some other mode, we should close the file using close() method of the file object as follows:

Closing a file releases valuable system resources. In case you forgot to close the file, Python will automatically close the file when program ends or file object is no longer referenced in the program. However, if your program is large and you are reading or writing multiple files that can take significant amount of resource on the system. If you keep opening new files carelessly, you could run out of resources. So be a good programmer and close the file as soon as you are done with it.

TextIOWrapper class #

MethodDescription
read([num])Reads the specified number of characters from the file and returns them as string. If num is omitted then it reads the entire file.
readline()Reads a single line and returns it as a string.
readlines()Reads the content of a file line by line and returns them as a list of strings.
write(str)Writes the string argument to the file and returns the number of characters written to the file.
seek(offset, origin)Moves the file pointer to the given offset from the origin.
tell()Returns the current position of the file pointer.
close()Closes the file

Writing Data to the Text File #

The following program demonstrates how to write data to the the file:

python101/Chapter-18/writing_to_file.py

In line 1, we are using open() method to open the text file in write mode. If the readme.md file doesn’t exists, the open() method will create the file. If the file already exists, then it’s data will be overwritten. Run the program and then open readme.md file. It should look like this:

python101/Chapter-18/readme.md

Let’s take a close look at how write() method writes data to the file.

When a file is opened the file pointer points at the beginning of the file. The write() function begins writing at the current file position and then increments the file pointer. For example, the following figure shows the position of file pointer after each write operation.

python textiowrapper io что это. Смотреть фото python textiowrapper io что это. Смотреть картинку python textiowrapper io что это. Картинка про python textiowrapper io что это. Фото python textiowrapper io что это

Note that unlike print() function, write() method do not print newline character ( \n ) at the end of string automatically. We can also use print() function to write data to the file. Let’s take a closer look at the signature of the print() using the help() function.

python101/Chapter-18/writing_data_using_print_function.py

This program produces the same output as before, the only difference is that, in this case the newline character ( \n ) is automatically added by the print() function.

Reading Data from a Text file #

To read a file you must open it in «r» mode. In addition to that, you should also ensure that the file you want to read already exists because in «r» mode the open() function throws FileNotFoundError error if its unable to find a file.

To test whether a file exists or not, we can use isfile() function from the os.path module. The syntax of isfile() is:

Example 1: Reading data at once using the read() method.

python101/Chapter-18/read_method_demo.py

Output:

Example 2: Reading data in chunks using the read() method.

python101/Chapter-18/reading_in_chunks.py

Output:

When the file is open in read mode the file pointer points at the beginning of the file.

python textiowrapper io что это. Смотреть фото python textiowrapper io что это. Смотреть картинку python textiowrapper io что это. Картинка про python textiowrapper io что это. Фото python textiowrapper io что это

python textiowrapper io что это. Смотреть фото python textiowrapper io что это. Смотреть картинку python textiowrapper io что это. Картинка про python textiowrapper io что это. Фото python textiowrapper io что это

python textiowrapper io что это. Смотреть фото python textiowrapper io что это. Смотреть картинку python textiowrapper io что это. Картинка про python textiowrapper io что это. Фото python textiowrapper io что это

The third call to read() reads the remaining characters in the file and returns them as a string. At this point, the file position pointer points at the end of the file. Consequently, any subsequent calls to read() method returns an empty string.

python textiowrapper io что это. Смотреть фото python textiowrapper io что это. Смотреть картинку python textiowrapper io что это. Картинка про python textiowrapper io что это. Фото python textiowrapper io что это

Example 3: Using readline() to read data from a file.

python101/Chapter-18/readline_method_demo.py

Output:

As usual when file is opened, the file pointer points at the beginning of the file.

python textiowrapper io что это. Смотреть фото python textiowrapper io что это. Смотреть картинку python textiowrapper io что это. Картинка про python textiowrapper io что это. Фото python textiowrapper io что это

The first call to readline() method moves the file pointer to the start of next line.

python textiowrapper io что это. Смотреть фото python textiowrapper io что это. Смотреть картинку python textiowrapper io что это. Картинка про python textiowrapper io что это. Фото python textiowrapper io что это

python textiowrapper io что это. Смотреть фото python textiowrapper io что это. Смотреть картинку python textiowrapper io что это. Картинка про python textiowrapper io что это. Фото python textiowrapper io что это

In line 10, the readline() is called again but this time it starts reading from the character c to the end of the line (including the newline character).

python textiowrapper io что это. Смотреть фото python textiowrapper io что это. Смотреть картинку python textiowrapper io что это. Картинка про python textiowrapper io что это. Фото python textiowrapper io что это

In line 13, readline() is called again, to read the last line. At this point, file position pointer is at the end of the file. That’s why readline() call in line 16 returns an empty string ( «» ).

python textiowrapper io что это. Смотреть фото python textiowrapper io что это. Смотреть картинку python textiowrapper io что это. Картинка про python textiowrapper io что это. Фото python textiowrapper io что это

Example 4: Using readlines() to read data from a file.

python101/Chapter-18/readlines_method_demo.py

Output:

Reading Large Files #

The read() and readlines() methods work great with small files. But what if your file has thousands or millions of lines in it? In such cases using read() or readlines() may result in memory hogs. A better approach would be to use loops and read file data in small chunks. For example:

python101/Chapter-18/reading_large_file_demo1.py

Output:

Here we are using an infinite loop to iterate over the contents of the file. As soon as the end of file is reached, the read() method returns an empty string ( «» ), if condition in line 12, evaluates to true and break statement causes the loop to terminate.

Python also allows us to use for loop to loop through the file data using file object as follows:

python101/Chapter-18/reading_large_files_using_for_loop.py

Output:

Appending Data to the Text File #

We can use «a» mode to append data to end of the file. The following program demonstrates how to append data to the end of the file.

python101/Chapter-18/append_data.py

Output:

Working with files using the with statement #

Python also provides a nice shortcut for file handling using the with statement. The following is the general form of the with statement when used with files.

The best thing about this shortcut is that it automatically closes the file without requiring any work on your part. The statements inside the body of the with statement must be equally indented otherwise you will get an error. The scope of file_object variable is only limited to the body of the with statement. If you try to call read() or write() method on it outside the block you will get an error.

The following examples show how we can use the with statement to read and write data to and from the file.

Example 1: Reading data line by line using for loop.

python101/Chapter-18/with_statement.py

Output:

Example 2: Reading all data at once using read() method.

python101/Chapter-18/with_statement2.py

Output:

Example 3: Reading a large file in small chunks.

python101/Chapter-18/with_statement3.py

Output:

Example 4: Writing data to a file using the write() method

python101/Chapter-18/with_statement4.py

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *