0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<ul><li><a>Текстовые файлы. Формат .txt</a></li>
1
<ul><li><a>Текстовые файлы. Формат .txt</a></li>
2
<li><a>Бинарные файлы. Формат .bin</a></li>
2
<li><a>Бинарные файлы. Формат .bin</a></li>
3
<li><a>Основные операции</a></li>
3
<li><a>Основные операции</a></li>
4
<li><a>Открытие. Метод open</a></li>
4
<li><a>Открытие. Метод open</a></li>
5
<li><a>Закрытие. Метод close</a></li>
5
<li><a>Закрытие. Метод close</a></li>
6
<li><a>Чтение и запись в файл</a><ul><li><a>Функция read</a></li>
6
<li><a>Чтение и запись в файл</a><ul><li><a>Функция read</a></li>
7
<li><a>Функция readline</a></li>
7
<li><a>Функция readline</a></li>
8
<li><a>Функция write</a></li>
8
<li><a>Функция write</a></li>
9
</ul></li>
9
</ul></li>
10
<li><a>Переименование. Функция rename</a></li>
10
<li><a>Переименование. Функция rename</a></li>
11
<li><a>Основные методы</a></li>
11
<li><a>Основные методы</a></li>
12
</ul><p>Статья расскажет о работе с файлами в Python: о вводе и выводе, открытии, чтении, записи, закрытии и выполнении других не менее важных операций.</p>
12
</ul><p>Статья расскажет о работе с файлами в Python: о вводе и выводе, открытии, чтении, записи, закрытии и выполнении других не менее важных операций.</p>
13
<p>Файл представляет собой набор данных, сохраненных на компьютере, причем каждый файл имеет название - filename (имя файла, name of file).</p>
13
<p>Файл представляет собой набор данных, сохраненных на компьютере, причем каждый файл имеет название - filename (имя файла, name of file).</p>
14
<p>В языке программирования Python выделяют 2 вида файлов:</p>
14
<p>В языке программирования Python выделяют 2 вида файлов:</p>
15
<p>- текстовые;</p>
15
<p>- текстовые;</p>
16
<p>- бинарные.</p>
16
<p>- бинарные.</p>
17
<p>Поговорим о каждом из типов подробнее.</p>
17
<p>Поговорим о каждом из типов подробнее.</p>
18
<h2><strong>Текстовые файлы. Формат .</strong><strong>txt</strong><strong></strong></h2>
18
<h2><strong>Текстовые файлы. Формат .</strong><strong>txt</strong><strong></strong></h2>
19
<p>Содержимое таких файлов вполне понятно человеку. То есть речь идет об обычных общепринятых символах, тексте, цифрах и т. п. Такие документы можно без проблем создавать, открывать, читать и редактировать Блокнотом и прочими простейшими редакторами.</p>
19
<p>Содержимое таких файлов вполне понятно человеку. То есть речь идет об обычных общепринятых символах, тексте, цифрах и т. п. Такие документы можно без проблем создавать, открывать, читать и редактировать Блокнотом и прочими простейшими редакторами.</p>
20
<p>Также важно отметить, что текст хранят не только в форме .txt, но и в формате.rtf (так называемом "формате обогащенного текста").</p>
20
<p>Также важно отметить, что текст хранят не только в форме .txt, но и в формате.rtf (так называемом "формате обогащенного текста").</p>
21
<h2><strong>Бинарные файлы. Формат .</strong><strong>bin</strong><strong></strong></h2>
21
<h2><strong>Бинарные файлы. Формат .</strong><strong>bin</strong><strong></strong></h2>
22
<p>В бинарных файлах отображение данных осуществляется в кодированной форме (применяются лишь нули и единицы). То есть речь идет уже о последовательности битов. Как следует из подзаголовка, для хранения используется формат .bin.</p>
22
<p>В бинарных файлах отображение данных осуществляется в кодированной форме (применяются лишь нули и единицы). То есть речь идет уже о последовательности битов. Как следует из подзаголовка, для хранения используется формат .bin.</p>
23
<h2>Основные операции</h2>
23
<h2>Основные операции</h2>
24
<p>По сути, практически любую операцию с файлом мы можем разделить на 3 главных этапа:</p>
24
<p>По сути, практически любую операцию с файлом мы можем разделить на 3 главных этапа:</p>
25
<ol><li>Открытие.</li>
25
<ol><li>Открытие.</li>
26
<li>Непосредственно выполнение операции (чтение, запись).</li>
26
<li>Непосредственно выполнение операции (чтение, запись).</li>
27
<li>Закрытие.</li>
27
<li>Закрытие.</li>
28
</ol><h2><strong>Открытие.</strong><strong>Метод open</strong></h2>
28
</ol><h2><strong>Открытие.</strong><strong>Метод open</strong></h2>
29
<p>В "Питоне" существует встроенная функция open. Используя ее, вы сможете открыть файл на персональном компьютере. Технически, речь идет о создании на основе файла объекта.</p>
29
<p>В "Питоне" существует встроенная функция open. Используя ее, вы сможете открыть файл на персональном компьютере. Технически, речь идет о создании на основе файла объекта.</p>
30
<p>Синтаксис относительно прост:</p>
30
<p>Синтаксис относительно прост:</p>
31
<p>f = open(file_name, access_mode)</p>
31
<p>f = open(file_name, access_mode)</p>
32
<p>Что здесь что:</p>
32
<p>Что здесь что:</p>
33
<ul><li>file_name - это имя файла, который надо открыть;</li>
33
<ul><li>file_name - это имя файла, который надо открыть;</li>
34
<li>access_mode - это режим открытия файла. Это может быть чтение, запись и так далее. Если ничего не указать, будут справедливы настройки по умолчанию, те есть станет использоваться режим чтения (r).</li>
34
<li>access_mode - это режим открытия файла. Это может быть чтение, запись и так далее. Если ничего не указать, будут справедливы настройки по умолчанию, те есть станет использоваться режим чтения (r).</li>
35
</ul><p>Полный список режимов открытия смотрите в таблице ниже:</p>
35
</ul><p>Полный список режимов открытия смотрите в таблице ниже:</p>
36
<p>В качестве примера давайте выполним создание текстового файла test.txt с последующим сохранением его в рабочей директории.</p>
36
<p>В качестве примера давайте выполним создание текстового файла test.txt с последующим сохранением его в рабочей директории.</p>
37
<p>Открыть созданный документ можно в режиме чтения из рабочей директории:</p>
37
<p>Открыть созданный документ можно в режиме чтения из рабочей директории:</p>
38
<p>f = open('test.txt','r') </p>
38
<p>f = open('test.txt','r') </p>
39
<p>Здесь f представляет собой переменную-указатель на файл test.txt.</p>
39
<p>Здесь f представляет собой переменную-указатель на файл test.txt.</p>
40
<p>Идем далее. Код ниже выведет содержимое файла и информацию об этом файле.</p>
40
<p>Идем далее. Код ниже выведет содержимое файла и информацию об этом файле.</p>
41
<p>>>> print(*f) # вывод содержимого</p>
41
<p>>>> print(*f) # вывод содержимого</p>
42
<p>Hello, Otus!</p>
42
<p>Hello, Otus!</p>
43
<p>>>> print(f) # вывод объекта</p>
43
<p>>>> print(f) # вывод объекта</p>
44
<p><_io.TextIOWrapper name='test.txt' mode='r' encoding='cp1252'></p>
44
<p><_io.TextIOWrapper name='test.txt' mode='r' encoding='cp1252'></p>
45
<p>Учтите, что в операционной системе "Виндовс" стандартная кодировка - это cp1252, в то время как в Linux - utf-08.</p>
45
<p>Учтите, что в операционной системе "Виндовс" стандартная кодировка - это cp1252, в то время как в Linux - utf-08.</p>
46
<h2><strong>Закрытие. М</strong><strong>етод close</strong></h2>
46
<h2><strong>Закрытие. М</strong><strong>етод close</strong></h2>
47
<p>Раз открыли, надо и закрыть - это высвободит ресурсы. Язык программирования Python автоматически закроет файл в том случае, если объект будет присвоен другому файлу.</p>
47
<p>Раз открыли, надо и закрыть - это высвободит ресурсы. Язык программирования Python автоматически закроет файл в том случае, если объект будет присвоен другому файлу.</p>
48
<p>Для закрытия есть несколько вариантов действий.</p>
48
<p>Для закрытия есть несколько вариантов действий.</p>
49
<p><strong>Вариант №1</strong></p>
49
<p><strong>Вариант №1</strong></p>
50
<p>Один из наиболее простых способов. Открытый файл закрываем с помощью метода close.</p>
50
<p>Один из наиболее простых способов. Открытый файл закрываем с помощью метода close.</p>
51
<p>f = open('test.txt','r')</p>
51
<p>f = open('test.txt','r')</p>
52
<p># работаем с файлом</p>
52
<p># работаем с файлом</p>
53
<p>f.close()</p>
53
<p>f.close()</p>
54
<p>Все, документ закрыт (closed). Закрыв его таким образом, вы не сможете его использовать, пока не откроете по новой.</p>
54
<p>Все, документ закрыт (closed). Закрыв его таким образом, вы не сможете его использовать, пока не откроете по новой.</p>
55
<p><strong>Вариант №2</strong></p>
55
<p><strong>Вариант №2</strong></p>
56
<p>Можно прописать try/finally. В результате файл закроется автоматически, если операции с ним приведут к исключениям. Закрытие произойдет до того, как остановится программа.</p>
56
<p>Можно прописать try/finally. В результате файл закроется автоматически, если операции с ним приведут к исключениям. Закрытие произойдет до того, как остановится программа.</p>
57
<p>Синтаксис создания исключения следующий:</p>
57
<p>Синтаксис создания исключения следующий:</p>
58
<p>f = open('test.txt','r')</p>
58
<p>f = open('test.txt','r')</p>
59
<p>try:</p>
59
<p>try:</p>
60
<p> # работаем с файлом</p>
60
<p> # работаем с файлом</p>
61
<p>finally:</p>
61
<p>finally:</p>
62
<p> f.close()</p>
62
<p> f.close()</p>
63
<p>Важно отметить, что файл следует открыть до срабатывания инструкции try.</p>
63
<p>Важно отметить, что файл следует открыть до срабатывания инструкции try.</p>
64
<p><strong>Вариант №3</strong></p>
64
<p><strong>Вариант №3</strong></p>
65
<p>В третьем случае пригодится инструкция with, упрощающая обработку исключений посредством инкапсуляции начальных операций, а также задач по очистке и закрытию.</p>
65
<p>В третьем случае пригодится инструкция with, упрощающая обработку исключений посредством инкапсуляции начальных операций, а также задач по очистке и закрытию.</p>
66
<p>Тут уже инструкция close нужна не будет, так как with закроет файл автоматически.</p>
66
<p>Тут уже инструкция close нужна не будет, так как with закроет файл автоматически.</p>
67
<p>Реализация в коде относительно проста:</p>
67
<p>Реализация в коде относительно проста:</p>
68
<p>with open('test.txt') as f:</p>
68
<p>with open('test.txt') as f:</p>
69
<p> # работаем с документом</p>
69
<p> # работаем с документом</p>
70
<h2><strong>Чтение и запись в файл</strong></h2>
70
<h2><strong>Чтение и запись в файл</strong></h2>
71
<p>Используя соответствующие режимы, можно выполнять чтение информации и ее сохранение (save) в буфер памяти.</p>
71
<p>Используя соответствующие режимы, можно выполнять чтение информации и ее сохранение (save) в буфер памяти.</p>
72
<h3><strong>Функция read</strong></h3>
72
<h3><strong>Функция read</strong></h3>
73
<p>Применяется для чтения содержимого после открытия документа в режиме чтения (r).</p>
73
<p>Применяется для чтения содержимого после открытия документа в режиме чтения (r).</p>
74
<p>Вот, как это выглядит:</p>
74
<p>Вот, как это выглядит:</p>
75
<p>file.read(size)</p>
75
<p>file.read(size)</p>
76
<p>Что здесь что:</p>
76
<p>Что здесь что:</p>
77
<ul><li>file - это объект файла;</li>
77
<ul><li>file - это объект файла;</li>
78
<li>size - это число символов, которые необходимо прочесть. Если конкретное число не указывать, документ будет прочитан полностью.</li>
78
<li>size - это число символов, которые необходимо прочесть. Если конкретное число не указывать, документ будет прочитан полностью.</li>
79
</ul><p>>>> f = open('test.txt','r')</p>
79
</ul><p>>>> f = open('test.txt','r')</p>
80
<p>>>> f.read(7) # читаем семь символов из test.txt</p>
80
<p>>>> f.read(7) # читаем семь символов из test.txt</p>
81
<h3><strong>Функция readline</strong></h3>
81
<h3><strong>Функция readline</strong></h3>
82
<p>Это функция обеспечивает построчное чтение (считывание) содержимого. Ее используют для работы с большими файлами, так как она позволяет получать доступ к конкретной строке, причем любой.</p>
82
<p>Это функция обеспечивает построчное чтение (считывание) содержимого. Ее используют для работы с большими файлами, так как она позволяет получать доступ к конкретной строке, причем любой.</p>
83
<p>Для примера создадим test.txt со следующими строками:</p>
83
<p>Для примера создадим test.txt со следующими строками:</p>
84
<p>This is Otus for developers 1.</p>
84
<p>This is Otus for developers 1.</p>
85
<p>This is Otus for developers 2.</p>
85
<p>This is Otus for developers 2.</p>
86
<p>This is Otus for developers 3.</p>
86
<p>This is Otus for developers 3.</p>
87
<p>И воспользуемся readline:</p>
87
<p>И воспользуемся readline:</p>
88
<p>x = open('test.txt','r')</p>
88
<p>x = open('test.txt','r')</p>
89
<p>x.readline() # читаем первую строку</p>
89
<p>x.readline() # читаем первую строку</p>
90
<p>This is Otus for developers 1.</p>
90
<p>This is Otus for developers 1.</p>
91
<p>>>> x.readline(2) # читаем 2-ю строку</p>
91
<p>>>> x.readline(2) # читаем 2-ю строку</p>
92
<p>This is Otus for developers 2.</p>
92
<p>This is Otus for developers 2.</p>
93
<p>>>> x.readlines() # читаем все строки сразу</p>
93
<p>>>> x.readlines() # читаем все строки сразу</p>
94
<p>['This is Otus for developers 1.','This is Otus for developers 2.','This is Otus for developers 3.']</p>
94
<p>['This is Otus for developers 1.','This is Otus for developers 2.','This is Otus for developers 3.']</p>
95
<h3><strong>Функция write</strong></h3>
95
<h3><strong>Функция write</strong></h3>
96
<p>Чтобы выполнить сохранение, нужно использовать функцию write. Сохранение в буфер памяти возможно только в те документы, которые открыты для записи (их можно сохранять, когда они находятся в соответствующем режиме).</p>
96
<p>Чтобы выполнить сохранение, нужно использовать функцию write. Сохранение в буфер памяти возможно только в те документы, которые открыты для записи (их можно сохранять, когда они находятся в соответствующем режиме).</p>
97
<p><strong>Синтаксис несложен:</strong></p>
97
<p><strong>Синтаксис несложен:</strong></p>
98
<p>file.write(string)</p>
98
<p>file.write(string)</p>
99
<p>Если вы попытаетесь открыть в данном режиме файл, несуществующий в буфере, будет создан новый. Представим, что файла supertest.txt у нас нет. Однако при попытке его открыть в режиме чтения, он появится:</p>
99
<p>Если вы попытаетесь открыть в данном режиме файл, несуществующий в буфере, будет создан новый. Представим, что файла supertest.txt у нас нет. Однако при попытке его открыть в режиме чтения, он появится:</p>
100
<p>f = open('supertest.txt','w') # открываем в режиме записи</p>
100
<p>f = open('supertest.txt','w') # открываем в режиме записи</p>
101
<p>f.write('Hello \n Otus') # пишем Hello Otus в документ</p>
101
<p>f.write('Hello \n Otus') # пишем Hello Otus в документ</p>
102
<p>Hello</p>
102
<p>Hello</p>
103
<p>Otus</p>
103
<p>Otus</p>
104
<p>f.close() # закрываем документ</p>
104
<p>f.close() # закрываем документ</p>
105
<h2><strong>Переименование.</strong><strong>Функция rename</strong></h2>
105
<h2><strong>Переименование.</strong><strong>Функция rename</strong></h2>
106
<p>Может возникнуть необходимость в переименовании имен файлов (filenames). Вопрос можно решить посредством функции rename. Но чтобы это сделать, сначала надо импортировать<strong>модуль os</strong>.</p>
106
<p>Может возникнуть необходимость в переименовании имен файлов (filenames). Вопрос можно решить посредством функции rename. Но чтобы это сделать, сначала надо импортировать<strong>модуль os</strong>.</p>
107
<p>Синтаксис:</p>
107
<p>Синтаксис:</p>
108
<p>import os</p>
108
<p>import os</p>
109
<p>os.rename(src,dest)</p>
109
<p>os.rename(src,dest)</p>
110
<p>Что здесь что:</p>
110
<p>Что здесь что:</p>
111
<ul><li>src - это файловый документ, которому надо изменить name;</li>
111
<ul><li>src - это файловый документ, которому надо изменить name;</li>
112
<li>dest - это новое имя.</li>
112
<li>dest - это новое имя.</li>
113
</ul><p>Вот, как это выглядит в коде:</p>
113
</ul><p>Вот, как это выглядит в коде:</p>
114
<p>import os</p>
114
<p>import os</p>
115
<p># переименовываем otus1.txt в otus2.txt</p>
115
<p># переименовываем otus1.txt в otus2.txt</p>
116
<p>>>> os.rename("otus1.txt","otus2.txt")</p>
116
<p>>>> os.rename("otus1.txt","otus2.txt")</p>
117
<h2><strong>Основные методы</strong></h2>
117
<h2><strong>Основные методы</strong></h2>
118
<p>В таблице ниже вы увидите основные методы, которые используются при работе с файлами (files) в "Пайтон":</p>
118
<p>В таблице ниже вы увидите основные методы, которые используются при работе с файлами (files) в "Пайтон":</p>
119
<a></a><p><a>Источник</a></p>
119
<a></a><p><a>Источник</a></p>
120
120