Работа с файлами в Python
Загрузить данные в программу из файла, выгрузить данные в файл, записывать историю обращений к программе в специальный файл — всё это очень частые задачи.
Как открыть файл
Чтобы открыть файл, используется функция open() :
my_file = open("myfile.txt", "r") file_contents = my_file.read() my_file.close()
- Функция open() принимает на вход 2 аргумента: путь до файла и права, с которыми его открыть. r — от read , т.е. мы просим открыть файл в режиме чтения.
- Функция open() возвращает не текст в файле, а сам файл. Файл как бы теперь открыт, как если вы бы щёлкнули по нему дважды левой клавишей.
- Метод файла .read() позволяет читать данные из файла. Строка с содержимым файла запишется в переменную file_contents .
- Метод .close закрывает файл.
Как сделать правильно
Закрывать файлы важно по двум причинам:
- Чтобы читать и писать в один и тот же файл из разных мест программы.
- Чтобы не превысить лимиты операционной системы. У неё есть ограничение на число одновременно открытых файлов. Ограничение легко превысить, если открывать файлы в цикле.
Однажды вы точно забудете закрыть файл. В Python есть специальная команда на такой случай — with :
with open("myfile.txt", "r") as my_file: file_contents = my_file.read() print(file_contents)
Выглядит немного непривычно, но суть простая: всё, что лежит “внутри” блока with (т.е. с отступом от него) — делается с открытым файлом. Как только файл не нужен, вы убираете отступ и файл сам закроется.
Открыть файл в папке
Допустим, рядом c вашим файлом main.py , из которого вы запускаете код, лежит папка files . В этой папке лежит файл file.txt :
. ├── files │ └── file.txt └── main.py
Вам очень нужно открыть файл file.txt , но он спрятался в папке, что же делать? Вот как его открыть:
with open("files/file.txt", "r") as my_file: file_contents = my_file.read() print(file_contents)
Ошибки кодировки
Бывает, что вы знаете, что файл в порядке, но Python читает его со странными символами: ������. Дело в кодировках: одни программы пользуют CP1251, другие ASCII, третьи UTF-8. К сожалению, программистам до сих пор не получилось окончательно перейти к какому-то одному варианту.
Чтобы открыть файл с нужной кодировкой, нужно передать функции open именованный аргумент encoding :
with open("myfile.txt", "r", encoding="ваша кодировка") as my_file: # .
Если вы не знаете кодировку вашего файла, на Хабре есть интересная статья с такой схемой:
Запись в файл
Для записи в файл нужно лишь указать режим w (write) и использовать не .read() , а .write() :
my_text = "Хочу записать эту строку в файл" with open("myfile.txt", "w") as my_file: my_file.write(my_text)
Альтернативные статьи
- Python World: работа с файлами
- Python Scripts: работа с файлами
Попробуйте бесплатные уроки по Python
Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.
Переходите на страницу учебных модулей «Девмана» и выбирайте тему.
Почему не могу открыть файл в питоне?
Господа или я глупый или лыжи не едут, как говориться. Что я делаю не так?
В книге Марка Лутц’а есть раздел работы с файлами. Так вот к делу. Есть исходный код
myfile = open(‘myfile.txt’. ‘w’)
Я помимо команды задаю еще и адрес т.к. кидать все файлы в папку с питоном мне линукс почему то не разрешает, да и хочется с раб.стола их запускать. Так вот,мой код выглядит так
> myfile = open('home\usr\bin\Desktop\myfile.txt'. 'w')
на что мне выдает вот это
File "", line 1 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 4-5: truncated \uXXXX escape
p.s. сижу на Ubuntu/
Вопрос, что я делаю не так? В чем ошибка?
p.s.s в Idle3 выдает именно такой слеш, пробовал сделать обратный слеш, мне выдавало стандартную
Traceback (most recent call last): File "", line 1, in FileNotFoundError: [Errno 2] No such file or directory: 'home/usr/bin/Desktop/myfile.txt.w
Хотя сам файл существует.
- Вопрос задан более трёх лет назад
- 5423 просмотра
4 комментария
Простой 4 комментария
Почему не получается открыть текстовый файл при помощи Python

Почему не получается открыть текстовый файл при помощи Python, хотя этот файл находится в одной директории с .py файлом
Отслеживать
задан 29 ноя 2019 в 19:16
3 1 1 серебряный знак 3 3 бронзовых знака
Потому что ищется не там, где находится, а там, где запускается.
29 ноя 2019 в 19:26
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Файл ищется в текущем каталоге, то есть в каталоге, из которого был запущен скрипт.
Таким каталогом в Вашем случае является C:/Users/Irbis .
Так как в текущем каталоге нет файла words.txt , Вы получаете ошибку. Для того чтобы исправить это, Вы можете:
-
Изменить текущий каталог В консоли:
cd Irbis/Desktop/Python
open('C:/Users/Irbis/Desktop/Python/words.txt')
open('Desktop/Python/words.txt')
import os os.chdir('C:/Users/Irbis/Desktop/Python') open('words.txt')
python не открывает .py файлы. лишь на несколько секунд появляется командная строка и все, Подскажите что делать?
Значит, файл отработал, работу закончил и вышел. Нормальное явление.
Запусти консоль, в ней — питоновскую консоль и в ней грузи эти файлы и выполняй.
добавь строку
input(«PRESS ENTER»)
Спасибо людям выше /\
Похожие вопросы
Ваш браузер устарел
Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.