HTML Diff
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>&gt;&gt;&gt; print(*f) # вывод содержимого</p>
41 <p>&gt;&gt;&gt; print(*f) # вывод содержимого</p>
42 <p>Hello, Otus!</p>
42 <p>Hello, Otus!</p>
43 <p>&gt;&gt;&gt; print(f) # вывод объекта</p>
43 <p>&gt;&gt;&gt; print(f) # вывод объекта</p>
44 <p>&lt;_io.TextIOWrapper name='test.txt' mode='r' encoding='cp1252'&gt;</p>
44 <p>&lt;_io.TextIOWrapper name='test.txt' mode='r' encoding='cp1252'&gt;</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>&gt;&gt;&gt; f = open('test.txt','r')</p>
79 </ul><p>&gt;&gt;&gt; f = open('test.txt','r')</p>
80 <p>&gt;&gt;&gt; f.read(7) # читаем семь символов из test.txt</p>
80 <p>&gt;&gt;&gt; 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>&gt;&gt;&gt; x.readline(2) # читаем 2-ю строку</p>
91 <p>&gt;&gt;&gt; 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>&gt;&gt;&gt; x.readlines() # читаем все строки сразу</p>
93 <p>&gt;&gt;&gt; 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>&gt;&gt;&gt; os.rename("otus1.txt","otus2.txt")</p>
116 <p>&gt;&gt;&gt; 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