Python: Работа с файлами
Рассмотрим работу с файлами: открытие, закрытие, чтение и запись.
Прежде чем приступать к работе с файлом, его следует открыть при помощи функции open().
f = open('cat.txt', 'r')
В первом аргументе указывается имя файла. Путь к файлу может быть относительным или абсолютным.
Во втором аргументе указывается режим открытия файла.
- r — открытие на чтение (по умолчанию)
- w — открытие на запись, содержимое файла удаляется, если файла не существует, то создаётся новый
- x — открытие на запись, если файла не существует, иначе исключение
- a — открытие на запись в конец файла
- b — открытие в двоичном режиме
- t — открытие в текстовом режиме (по умолчанию)
- + — открытие на чтение и запись
Режимы могут быть объединены. По умолчанию режим равен rt (чтение текстового файла). Для чтения в двоичном режиме используйте режим rb.
Третий параметр используется для кодировки при работе в текстовом режиме чтения файла.
После окончания работы с файлом, его нужно обязательно закрыть через метод close().
Создание файла и запись в него
Создадим файл с указанным именем и запишем в него две строчки текста при помощи метода write(). Я проделал это в режиме REPL.
file = open ('D:\cat.txt', 'w') file.write("First Line \n") file.write("Second Line") file.close()
При вводе в режиме REPL после ввода команды write() выводится возвращаемое значение метода — количество записанный в файл байт.
Параметр w в методе open() означает write, т.е. мы открываем файл в режиме записи. Метод возвращает объект TextIOWrapper.
file = open ('D:\cat.txt', 'w') type(file) #
Чтение файла
Прочитаем созданный файл. Есть два варианта: прочитать весь файл сразу целиком или считывать построчно.
file = open('D:\cat.txt', 'r') print(file.read()) # читаем целимом #print(file.readline()) # построчно #print(file.readline()) file.close()
В методе можно указать число символов для чтения (целое число).
file.read(2)
Файлы. Работа с файлами.

В данной статье мы рассмотрим встроенные средства python для работы с файлами: открытие / закрытие, чтение и запись.
Итак, начнем. Прежде, чем работать с файлом, его надо открыть. С этим замечательно справится встроенная функция open:
У функции open много параметров, они указаны в статье "Встроенные функции", нам пока важны 3 аргумента: первый, это имя файла. Путь к файлу может быть относительным или абсолютным. Второй аргумент, это режим, в котором мы будем открывать файл.
| Режим | Обозначение |
| ‘r’ | открытие на чтение (является значением по умолчанию). |
| ‘w’ | открытие на запись, содержимое файла удаляется, если файла не существует, создается новый. |
| ‘x’ | открытие на запись, если файла не существует, иначе исключение. |
| ‘a’ | открытие на дозапись, информация добавляется в конец файла. |
| ‘b’ | открытие в двоичном режиме. |
| ‘t’ | открытие в текстовом режиме (является значением по умолчанию). |
| ‘+’ | открытие на чтение и запись |
Режимы могут быть объединены, то есть, к примеру, ‘rb’ — чтение в двоичном режиме. По умолчанию режим равен ‘rt’.
И последний аргумент, encoding, нужен только в текстовом режиме чтения файла. Этот аргумент задает кодировку.
Чтение из файла
Открыли мы файл, а теперь мы хотим прочитать из него информацию. Для этого есть несколько способов, но большого интереса заслуживают лишь два из них.
Первый — метод read, читающий весь файл целиком, если был вызван без аргументов, и n символов, если был вызван с аргументом (целым числом n).
Ещё один способ сделать это — прочитать файл построчно, воспользовавшись циклом for:
Запись в файл
Теперь рассмотрим запись в файл. Попробуем записать в файл вот такой вот список:
Откроем файл на запись:
Запись в файл осуществляется с помощью метода write:
После окончания работы с файлом его обязательно нужно закрыть с помощью метода close:
Теперь попробуем воссоздать этот список из получившегося файла. Откроем файл на чтение (надеюсь, вы поняли, как это сделать?), и прочитаем строки.
Мы получили тот же список, что и был. В более сложных случаях (словарях, вложенных кортежей и т. д.) алгоритм записи придумать сложнее. Но это и не нужно. В python уже давно придумали средства, такие как pickle или json, позволяющие сохранять в файле сложные структуры.
Для вставки кода на Python в комментарий заключайте его в теги
- Модуль csv - чтение и запись CSV файлов
- Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
- Онлайн-обучение Python: сравнение популярных программ
- Книги о Python
- GUI (графический интерфейс пользователя)
- Курсы Python
- Модули
- Новости мира Python
- NumPy
- Обработка данных
- Основы программирования
- Примеры программ
- Типы данных в Python
- Видео
- Python для Web
- Работа для Python-программистов
- Сделай свой вклад в развитие сайта!
- Самоучитель Python
- Карта сайта
- Отзывы на книги по Python
- Реклама на сайте
Запись в файл Python. Перезапись файла Python
Высокоуровневый язык Python 3 имеет множество полезных средств, позволяющих взаимодействовать с текстовыми файлами. Вы можете как создавать документы для хранения информации, так и выполнять чтение, запись и удаление данных.
Сегодня поговорим о создании и записи файлов.
Создание файла, его открытие и закрытие
Работа с текстовым файлом в Python начинается с момента вызова функции open. Она принимает в качестве атрибутов путь к объекту на ПК и режим обработки. Вы можете указать абсолютный путь (это адрес размещения на жёстком диске) или относительный (речь идёт о координатах относительно папки проекта).
Что касается режима обработки файла, то при его выборе учитывайте его назначение («r» — для чтения, «w» — для записи). Таблица ниже позволит вам ознакомиться с режимами доступа к файлу в Python:

А вот пример простейшего взаимодействия с текстовым документом:
file = open("otus.txt", "w") file.write("hello world") file.close()
Здесь функция open принимает относительный путь, открывая его для записи. При этом, если в папке файл otus.txt будет отсутствовать, метод open создает его автоматически, после чего откроет для него нужный режим обработки.
Метод close закрывает файл, а это необходимо сделать, выполнив нужные вам действия с переменной file (иначе потеряете информацию). Впрочем, можно обойтись и без close, используя связку операторов with as (переменная, которая ссылается на файл, должна быть прописана после конструкции):
with open("otus.txt", "w") as file: file.write("hello world")
Метод write() для записи в файл в Python
В предыдущих примерах мы уже использовали метод write() . Он позволяет записывать любую строку в открытый файл. Помните, что строки в Python способны содержать не только текст, но и двоичные данные.
Запись в файл построчно выполняется посредством записи нужной вам строки с последующей записью \n — символа перевода строки.
Давайте ещё раз посмотрим на запись в файл с помощью метода write(). Синтаксис:
my_file.write(string);
my_file = open("otus.txt", "w") my_file.write("Люблю Python!\nЭто крутой язык!") my_file.close()
Код, представленный выше, создаст файл otus.txt , записав в него указанную строку.
Давайте теперь выполним запись списка поэлементно, где каждый элемент списка будет записан в новой строке:
lines = ["one", "two", "three"] with open(r"C:\otus.txt", "w") as file: for line in lines: file.write(line + '\n')
Этот код позволит создать небольшой массив lines, содержащий три строковых элемента: «one», «two» и «three». Благодаря функции open и связке операторов with as произойдёт открытие текстового файла otus.txt в корневом каталоге жёсткого диска C. Далее произойдёт запись всех элементов списка с помощью write. Символ \n обеспечит, чтобы каждая запись была выполнена с новой строки.
Как лучше создать пустой файл в Python 3?
Какой способ лучше и почему? Какие еще есть способы?
Особенно интересует описание работы второго способа. Функция open создаст файловый объект, но т. к. он никуда не сохранен, интерпретатор его удалит? Т. е. тогда файл будет сразу доступен для чтения/редактирования/удаления, но уже другой команде/программе?
Python 3.4, Windows 8.1
- Вопрос задан более трёх лет назад
- 47856 просмотров
2 комментария
Оценить 2 комментария
lololololo @lololololo
Encoding лишнее для пустого файла
Станислав Карпов @stkrp Автор вопроса
lololololo: Да, согласен, из-за привычки указал.
Решения вопроса 1
я бы предложил такой вариант
open(..).close()
и файл закрываться, и в одну строчку и без грамозких конструкций.
что касается ошибок - то все варианты в этом плане одинаковы.
Ответ написан более трёх лет назад
Нравится 2 2 комментария
Станислав Карпов @stkrp Автор вопроса
Это так просто, но почему-то абсолютно не думал об объединении этих двух операций. То, что я искал. Большое спасибо!
По поводу предположения. Попробовал вот так:
from time import sleep with open('1.txt', 'wt') as f: f.write('test_1') sleep(15) f.write('test_2')
И во время выполнения блокнотом открыл файл и записал 'test'. По окончании работы скрипта в файле остается 'test'. Причем, файл создался, но данные, введенные перед sleep(15) не сохранены в файле. Если файл не открывать в течение 15 секунд, то он будет содержать 'test_1test_2'.
Python 3.4, Ubuntu 14.04
Ну то что файлы можно открыть из разных процессов еще не означает, что если писать в него из разных процессов, то все будет хорошо 🙂
>Причем, файл создался, но данные, введенные перед sleep(15) не >сохранены в файле.
Ну это как раз таки все нормально - есть такое понятие как буфферезированый ввод/вывод (см. flush)
То что если успеть переписать файл после открытия, нужно точно смотреть, что до как, но скорее всего тут проблема во внутренних указателях файла.