Перейти к содержимому

Почему не открывается файл в питоне

  • автор:

Работа с файлами в 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 закрывает файл.

Как сделать правильно

Закрывать файлы важно по двум причинам:

  1. Чтобы читать и писать в один и тот же файл из разных мест программы.
  2. Чтобы не превысить лимиты операционной системы. У неё есть ограничение на число одновременно открытых файлов. Ограничение легко превысить, если открывать файлы в цикле.

Однажды вы точно забудете закрыть файл. В 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.

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

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