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

Как ставить бинарный файл на дозапись питон

  • автор:

Запись информации в двоичный файл

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

мат Вид Справка

представлена на рис. 145. г

Файл Правка Фор

PiP’q Х? PHPePiCfP»Peq7XJ 1967q-h-e.

Рис. 145. Содержимое бинарного файла, открытого в редакторе Блокнот

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

Для совершения всех этих операций, в Python предусмотрены два модуля: модуль pickle (от англ, pickling — консервация) и модуль shelve (от англ. shelvingстеллаж, размещение на полках). Соответственно, первый метод позволяет консервировать структуры данных, а второй метод — осуществить доступ к объектам, хранящихся «на полках».

Для того чтобы записать информацию в бинарный файл, его требуется открыть функцией open, синтаксис которой следующий:

Файловая переменная=ореп (FileName, Mode)

Файловая переменная — переменная, в которой будет находиться значение, возвращенное функцией open;

FileName — представляет собой путь к открываемому файлу;

Mode — режим доступа. Может принимать значения, представленные в табл. 9.

Таблица 9. Возможные значения режима Mode функции ореп() при работе с бинарными файлами

Чтение информации из файла. Если файл не существует, возникает исключение ЮЕггог

Запись информации в файл. Если файл существует, его содержимое полностью заменится; если файл не существует, он будет создан

Дозапись в двоичный (бинарный) файл. Если файл существует, новые данные будут дописаны в конец. Если файл не существует, он будет создан

Чтение и запись в двоичный (бинарный) файл. Если файл не существует, возникает исключение ЮЕггог

Чтение и запись из двоичного (бинарного) файла. Если файл существует, он будет перезаписан. Если файл не существует, он будет создан

Дозапись и чтение из двоичного (бинарного) файла. Если файл существует, новые данные будут дописаны в конец. Если файл не существует, он будет создан

Второе действие, выполняемое над бинарным файлом, заключается в непосредственной записи информации в файл. Запись осуществляется с помощью метода dump(), имеющего следующий синтаксис:

Задача 1. Разработайте базу данных, содержащую сведения об автомобилях. О каждом автомобиле известно следующее:

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

Комментарий. В самом начале программы мы создадим три списка avtol, avto2, avto3 в которых находятся сведения о каждом автомобиле: марка, цвет и год выпуска. Четвертый список avto4 создадим в диалоговом режиме. Далее, оператором zap=open(«avto.dat»,»wb») открывается файл с именем avto.dat на запись двоичной информации, на что указывает режим M wb» (см. табл. 9). С помощью последующих четырех методов dumpO происходит так называемая сериализация объектов (последовательность перевода какой-либо структуры данных в последовательность битов).

В следующей части программы происходит расконсервация данных. Она основана на применении функции load(), которая читает данные из файла и преобразовывает их в объект. Ее синтаксис следующий:

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

avto 1 =[«Волга»,»Белый»,» 1970″] ауЮ2=[«Жигули», «Красный», «1980»] ауЮЗ=[«Победа»,»Зеленый»,» 1950″] тагка=три!(«пВведите марку автомобиля «) со1ог=три1(«пВведите цвет автомобиля «) god=input(» BBeflHTe год автомобиля «) avto4=[marka, color, god] zap=open(«avto.dat»,»wb») pickle.dump(avtol,zap) #консервация данных pickle.dump(avto2,zap) pickle.dump(avto3,zap) pickle.dump(avto4,zap) zap.close()

avto 1 =pickle.load(zap) #расконсервация данных

На рис. 146 представлена информация, извлеченная из файла avto.dat.

Python 3.5.1 (v3.5.1:37а07сее5969, Dec 5 2015, 21:12:44)

[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darvuin

Type «copyright», «credits» or «licenseO» for more information.

»> WARNING: The version of Tcl/Tk (8.5.9) in use may be unstable.

Visit http://vwitt.python.org/download/mac/tcltk/ for current information

— RESTART: /Volumes/KINGSTON/Консервация авто с добавлением элементов.

Введите марку автомобиля Тойота

Введите цвет автомобиля Белый

Введите год автомобиля 1985 [‘Волга’, ‘Белый’, ‘1970’]

[‘Жигули’, ‘Красный’ , ‘1980’]

[‘Победа’, ‘Зеленый’, ‘1950’]

[‘Тойота’, ‘Белый’, ‘1985’]

Рис. 146. Данные об автомобилях

Создадим новый проект Python и, подключив модуль shelve, откроем файл avtol.dat с помощью функции open. Использование оператора shelve.open предполагает наличие файла с консервированными объектами.

Теперь мы можем вывести данные по каждому автомобилю, запросив, например, его название. Полка (polka) подобна словарю, и сведения, хранящиеся на полке, доступны по соответствующему ключу: «avtol», «avto2», «avto3», «avto4».

Подобно банкам с консервированными огурцами, которые хозяйка размещает для хранения на полках в кухонном шкафу, мы разместим сведения о каждом из автомобилей на виртуальных полках. Поэтому спискам было решено дать соответствующие имена: polka[«avtol»], polka[«avto2»] и polka[«avto3»],

polka[«avto4»]. Как в словаре, каждому значению, хранящемуся на полке, соответствует ключ, который записывается в квадратных скобках: «avtol», «avto2», «avto3», «avto4». С помощью метода sync() объекта-полки, осуществляется запись данных. Код программы представлен в листинге 140.

polka=shelve.open(«avto 1 .dat») polka[«avto 1 «]=[«Волга»,'»Белый»,» 1970″] ро1ка[«а*о2»]=[«Жигули», «Красный», «1980»] ро1ка[«ауЩЗ»]=[«Победа»,»Зеленый», «1950»] тагка=три1(«пВведите марку автомобиля «) со1ог=триД»пВведите цвет автомобиля «) god=input(» Bвeдитe год автомобиля «) polka[«avto4»]=[marka, color, god] polka.sync()

тагка=три!(«пВведите марку автомобиля «) if тагка==»Волга»:

print(«Данные по машине»,marka, polka[«avtol»]) if тагка==»Жигули»:

ргт1(«Данные по машине»,marka,polka[«avto2″]) if тагка==»Победа»:

ргт1(«Данные по машине»,marka,polka[«avto3″]) if тагка==»Тойота»:

ргт1(«Данные по машине»,marka,polka[«avto4»]) polka.closeQ_

Запрос по автомобилю «Тойота» представлен на рис. 147.

Python 3.5.1 (v3.5.1:37a07cee5969, Dec 5 2015, 21:12:44)

! [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin Type «copyright», «credits» or «licenseO» for more information.

Введите марку автомобиля Тойота Введите цвет автомобиля Белый Введите год автомобиля 1985 Введите марку автомобиля Тойота

Данные по машине Тойота [‘Тойота’, ‘Белый’, ‘1985’] »>

Рис. 147. Результаты запроса

Чтение данных из файла и запись в файл

В Python, чтобы создать файл, надо его открыть в режиме записи ( ‘w’ , ‘wb’ ) или дозаписи ( ‘a’ , ‘ab’ ).

f2 = open("text2.txt", 'w')

Функция open() возвращает файловый объект.

Без ‘b’ создается текстовый файл, представляющий собой поток символов. С ‘b’ — файл, содержащий поток байтов.

В Python также существует режим ‘x’ или ‘xb’ . В этом режиме проверяется, есть ли файл. Если файл с определенным именем уже существует, он не будет создан. В режиме ‘w’ файл создается заново, старый при этом теряется.

>>> f1 = open('text1.txt', 'w') >>> f2 = open('text1.txt', 'x') Traceback (most recent call last): File "", line 1, in FileExistsError: [Errno 17] File exists: 'text1.txt' >>> f3 = open('text1.txt', 'w')

Чтение данных из файла

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

Попытка открыть на чтение несуществующий файл вызывает ошибку.

>>> f = open("text10.txt") Traceback (most recent call last): File "", line 1, in IOError: [Errno 2] No such file or directory: 'text10.txt'

Перехватить возникшее исключение можно с помощью конструкции try-except .

>>> try: . f = open("text10.txt") . except IOError: . print ("No file") . No file

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

>>> f = open("text.txt") >>> f >>> fd = f.read() >>> fd1 = f.read() >>> fd 'Hello\n\tOne\n Two\nThree Four\nШесть!\n' >>> fd1 ''

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

>>> f = open('text.txt', 'rb') >>> content = f.read() >>> type(content) >>> content b'HelloHello' >>> content[0] 72 >>> chr(content[0]) 'H'

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

>>> f = open("text.txt") >>> fd = f.read(10) >>> fd1 = f.read(5) >>> fd 'Hello\n\tOne' >>> fd1 '\n T'

Метод readline() позволяет получать данные построчно.

>>> f = open("text.txt") >>> f.readline() 'Hello\n' >>> f.readline() '\tOne\n' >>> f.readline() ' Two\n'

Принимает аргумент — число байт или символов.

>>> f.readline(3) 'Thr' >>> f.readline(3) 'ee ' >>> f.readline(3) 'Fou' >>> f.readline(3) 'r\n' >>> f.readline(5) 'Шесть' >>> f.readline(5) '!\n'

Для построчного чтения данных из файла рекомендуется использовать цикл for :

>>> f = open('text.txt') >>> for line in f: . print(line, end='') . Hello! The second line. >>> f.close()

Метод readlines() считывает все строки и помещает их в список.

>>> f = open("text.txt") >>> fd = f.readlines() >>> fd ['Hello\n', '\tOne\n', ' Two\n', 'Three Four\n', 'Шесть!\n']

Может принимать количество символов, но дочитывает строку до конца.

>>> f = open("text.txt") >>> fd = f.readlines(3) >>> fd ['Hello\n'] >>> fd1 = f.readlines(6) >>> fd1 ['\tOne\n', ' Two\n']

Запись данных в файл

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

>>> ft = open('text1.txt', 'w') >>> fb = open('text2.txt', 'wb') >>> t = 'Привет Мир!' >>> b = b'Hello World!' >>> type(t), type(b) (, ) >>> ft.write(t) 11 >>> fb.write(b) 12 >>> ft.close() >>> fb.close() >>> >>> import os.path >>> os.path.getsize('text1.txt') 20 >>> os.path.getsize('text2.txt') 12 >>> open('text2.txt').read() 'Hello World!'

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

>>> a = [1, 2, 3, 4] >>> sa = str(a) >>> sa '[1, 2, 3, 4]' >>> f = open('mylist.txt', 'w') >>> f.write(sa) 12 >>> f.close() >>> >>> with open('mylist.txt') as f: . sa = f.read() . >>> sa '[1, 2, 3, 4]' >>> list(sa) # bad idea ['[', '1', ',', ' ', '2', ',', ' ', '3', ',', ' ', '4', ']'] >>> a = [int(i) for i in sa if i.isdigit()] >>> a [1, 2, 3, 4]

С помощью метода writelines() можно записать в файл итерируемую последовательность.

>>> a = [1,2,3,4,5,6,7,8,9,0] >>> f = open("text2.txt",'w') >>> f.writelines("%s\n" % i for i in a) >>> f.close() >>> open("text2.txt").read() '1\n2\n3\n4\n5\n6\n7\n8\n9\n0\n' >>> print(open("text2.txt").read()) 1 2 3 4 5 6 7 8 9 0

Смена позиции в файле

Метод tell() возвращает текущую позицию в файле. Позицию можно менять с помощью метода seek() .

>>> f = open('text.txt') >>> f.tell() 0 >>> f.readline() 'Hello!\n' >>> f.tell() 7 >>> f.seek(5) 5 >>> f.read(1) '!' >>> f.tell() 6 >>> f.read() '\nThe second line.\n' >>> f.read() '' >>> f.seek(0) 0 >>> f.read() 'Hello!\nThe second line.\n'

В случае бинарных файлов в метод seek() можно передавать второй аргумент, который указывает, с какого места выполняется смещение, указанное в первом аргументе: 0 (по умолчанию) — от начала файла, 1 — с текущей позиции, 2 — с конца.

>>> f = open('text.txt', 'rb') >>> f.read() b'Hello!\nThe second line.\n' >>> f.seek(-6, 2) 18 >>> f.read(4) b'line' >>> f.seek(0) 0 >>> f.read(5) b'Hello' >>> f.seek(2, 1) 7 >>> f.read(3) b'The'

Закрытие файла

В Python следует закрывать файл для высвобождения системных ресурсов. Делается это с помощью метода close() файлового объекта.

С помощью closed (не константа, а так называемый дескриптор, или описатель, данных) проверяют, закрыт файл или нет.

>>> f = open('text.txt') >>> f.closed False >>> f.close() >>> f.closed True

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

>>> with open('text.txt') as f: . print(f.read()) . HelloHello >>> f.closed True
>>> with open('text.txt') as fr, open('text2.txt', 'w') as fw: . fw.write(fr.read()) . 10 >>> fw.closed True 
>>> with ( . open('text.txt') as fr, . open('text2.txt', 'w') as fw, . ): . fw.write(fr.read()) . 10

Двоичные файлы

Пример копирования изображения:

>>> f1 = open('flag.png', 'rb') >>> f2 = open('flag2.png', 'wb') >>> f2.write(f1.read()) 446 >>> f1.close() >>> f2.close()

Модуль struct позволяет преобразовывать данные к бинарному виду и обратно.

>>> f = open('text3.txt', 'wb') >>> f.write('3') Traceback (most recent call last): File "", line 1, in TypeError: 'str' does not support the buffer interface >>> d = struct.pack('>i',3) >>> d b'\x00\x00\x00\x03' >>> f.write(d) 4 >>> f.close() >>> f = open('text3.txt') >>> d = f.read() >>> d '\x00\x00\x00\x03' >>> struct.unpack('>i',d) Traceback (most recent call last): File "", line 1, in TypeError: 'str' does not support the buffer interface >>> f = open('text3.txt', 'rb') >>> d = f.read() >>> d b'\x00\x00\x00\x03' >>> struct.unpack('>i',d) (3,)

Функция open. Чтение и запись текстовых файлов в Python

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

Бывают еще байтовые (бинарные) файлы, которые рассматриваются как потоки байтов. Побайтово считываются, например, файлы изображений. Работа с бинарными файлами несколько сложнее. Нередко их обрабатывают с помощью специальных модулей Python (pickle, struct).

Функция open

Связь с файлом на жестком диске выполняется с помощью встроенной в Python функции open() . Обычно ей передают один или два аргумента. Первый – имя файла или имя с адресом, если файл находится не в том каталоге, где находится сама программа. Второй аргумент – режим, в котором открывается файл.

Обычно используются режимы чтения ( ‘r’ ) и записи ( ‘w’ ). Если файл открыт в режиме чтения, то запись в него невозможна. Можно только считывать данные. Если файл открыт в режиме записи, то в него можно только записывать данные, считывать нельзя.

Если файл открывается в режиме ‘w’ , то все данные, которые в нем были до этого, стираются. Файл становится пустым. Если не надо удалять существующие в файле данные, тогда следует использовать вместо режима записи, режим дозаписи ( ‘a’ ).

Если файл отсутствует, то открытие его в режиме ‘w’ создаст новый файл. Бывают ситуации, когда надо гарантировано создать новый файл, избежав случайной перезаписи данных существующего. В этом случае вместо режима ‘w’ используется режим ‘x’ . В нем всегда создается новый файл для записи. Если указано имя существующего файла, то будет выброшено исключение. Потери данных в уже имеющемся файле не произойдет.

Если при вызове open() второй аргумент не указан, то файл открывается в режиме чтения как текстовый файл. Чтобы открыть файл как байтовый, дополнительно к букве режима чтения/записи добавляется символ ‘b’ . Буква ‘t’ обозначает текстовый файл. Поскольку это тип файла по умолчанию, то обычно ее не указывают.

Нельзя указывать только тип файла, то есть open(«имя_файла», ‘b’) есть ошибка, даже если файл открывается на чтение. Правильно – open(«имя_файла», ‘rb’) . Только текстовые файлы мы можем открыть командой open(«имя_файла») , потому что и ‘r’ и ‘t’ подразумеваются по-умолчанию.

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

Чтение файла

С помощью файлового метода read() можно прочитать файл целиком или только определенное количество байт. Пусть у нас имеется файл data.txt с таким содержимым:

one - 1 - I two - 2 - II three - 3 - III four - 4 - IV five - 5 - V

Откроем его и почитаем:

>>> f1 = open(‘data.txt’) >>> f1.read(10) ‘one — 1 — ‘ >>> f1.read() ‘I\ntwo — 2 — II\nthree — 3 — III\nfour — 4 — IV\nfive — 5 — V\n’ >>> f1.read() » >>> type(f1.read())

Сначала считываются первые десять символов. Последующий вызов read() считывает весь оставшийся текст. После этого объект файлового типа f1 становится пустым.

Заметим, что метод read() возвращает строку, и что конец строки считывается как ‘\n’ .

Для того, чтобы читать файл построчно существует метод readline() :

>>> f1 = open('data.txt') >>> f1.readline() 'one - 1 - I\n' >>> f1.readline() 'two - 2 - II\n' >>> f1.readline() 'three - 3 — III\n'

Метод readlines() считывает сразу все строки и создает список:

>>> f1 = open('data.txt') >>> f1.readlines() ['one - 1 - I\n', 'two - 2 - II\n', 'three - 3 - III\n', 'four - 4 - IV\n', 'five - 5 - V\n']

Объект файлового типа относится к итераторам. Из таких объектов происходит последовательное извлечение элементов. Элементами в данном случае являются строки-линии файла. Поэтому считывать данные из файла можно сразу в цикле без использования методов чтения:

>>> for i in open('data.txt'): . print(i) . one - 1 - I two - 2 - II three - 3 - III four - 4 - IV five - 5 - V >>>

Здесь выводятся лишние пустые строки, потому что функция print() преобразует ‘\n’ в переход на новую строку. К этому добавляет свой переход на новую строку. Создадим список строк файла без ‘\n’ :

>>> nums = [] >>> for i in open('data.txt'): . nums.append(i[:-1]) . >>> nums ['one - 1 - I', 'two - 2 - II', 'three - 3 - III', 'four - 4 - IV', 'five - 5 - V']

Переменной i присваивается очередная строка файла. Мы берем ее срез от начала до последнего символа, не включая его. Следует иметь в виду, что ‘\n’ это один символ, а не два.

Запись в файл

Запись в файл выполняется с помощью методов write() и writelines() . Во второй можно передать структуру данных:

>>> l = ['tree', 'four'] >>> f2 = open('newdata.txt', 'w') >>> f2.write('one') 3 >>> f2.write(' two') 4 >>> f2.writelines(l)

Метод write() возвращает количество записанных символов.

Закрытие файла

После того как работа с файлом закончена, важно не забывать его закрыть, чтобы освободить место в памяти. Делается это с помощью файлового метода close() . Свойство файлового объекта closed позволяет проверить закрыт ли файл.

>>> f1.close() >>> f1.closed True >>> f2.closed False

Если файл открывается в заголовке цикла ( for i in open(‘fname’) ), то видимо интерпретатор его закрывает при завершении работы цикла или через какое-то время.

Практическая работа

  1. Создайте файл data.txt по образцу урока. Напишите программу, которая открывает этот файл на чтение, построчно считывает из него данные и записывает строки в другой файл ( dataRu.txt ), заменяя английские числительные русскими, которые содержатся в списке ( [«один», «два», «три», «четыре», «пять»] ), определенном до открытия файлов.
  2. Создайте файл nums.txt , содержащий несколько чисел, записанных через пробел. Напишите программу, которая подсчитывает и выводит на экран общую сумму чисел, хранящихся в этом файле.

Примеры решения и дополнительные уроки в pdf-версии курса

X Скрыть Наверх

Python. Введение в программирование

Работа с файлами

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

Сегодня наши программы тоже смогут так делать!

Что такое файл?

До этого момента вся информация, с которой мы работали, хранилась исключительно в оперативной памяти — в переменных.

Но информация из оперативной пропадает при закрытии программы или перезагрузке компьютера. Что делать с данными, которые нужно хранить между запусками? Единственное решение — это хранить данные на энергонезависимом носителе — жестком диске (HDD) или твердотельном накопителе (SSD). Далее будет использоваться термин жесткий диск, хотя подразумевается любое из этих устройств.

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

Также, как и переменные, файлы занимают какое-то место, их размер измеряется в байтах.

Способ организации и хранения файлов на диске называется файловой системой.

Текстовые и бинарные файлы

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

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

Текстовые файлы могут иметь произвольные расширения, вам, возможно встречались .txt, .py, .html.

Текстовые файлы можно открыть в текстовом редакторе, например, в блокноте.

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

Как интерпретировать ту или иную группу байт в файле, нам говорит формат файла. Примеры бинарных файлов: .exe, .doc, .dll и тд..

Если открыть бинарный файл в блокноте, вы увидите много страшных символов — компьютер попытается интерпретировать все данные в файле как буквы.

Создаем текстовый файл

При работе с файлами всегда используется следующий алгоритм:

  • открытие файла
  • изменение или чтение файла
  • закрытие файла

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

Чтобы открыть файл, в питоне используется функция open(path, mode) , которая принимает путь к файлу (абсолютный или относительный) и режим. Режим — это либо чтение (read), либо запись (write), либо добавление в конец файла (append).

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

Давайте создадим текстовый файл и запишем туда небольшой текст:

file = open('new.txt', 'w') # открываем файл new.txt для записи (w) file.write("hello world! :)") # записываем строку в файл file.close() # закрываем файл

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

После выполнения программы, в папке с кодом должен появиться новый файл new.txt, а в нем — строка «hello world».

Читаем текстовый файл

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

file = open('smiles.txt', 'r') # открываем файл smiles.txt для чтения (r) text = file.read() # считываем все содержимое файла в переменную file.close() print(text[:100])

Файл smiles.txt можно скачать тут.

Используем with

Чтобы случайно не забыть закрыть файл после окончания работы с ним, используйте обертку with . Она автоматически закроет файл, как только закончится ее область видимости.

Пример:

with open('smiles.txt', 'r') as file: text = file.read() # файл автоматически закрылся print(text[:100])

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

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