Python-сообщество
![]()
- Начало
- » Python для новичков
- » python не видит файл txt
#1 Янв. 5, 2013 11:37:05
anuket Зарегистрирован: 2013-01-05 Сообщения: 4 Репутация: 0 Профиль Отправить e-mail
python не видит файл txt
Текстовый файл и программа в одной папке но всё равно выдаёт
Traceback (most recent call last):
File “C:\Users\Anuket\Desktop\New folder\inimene.py”, line 1, in
fm=open(“inimene.txt”)
FileNotFoundError: No such file or directory: ‘inimene.txt’
пробую уже без программы просто открыть закрыть
fm=open(“inimene.txt”)
fm.close()
и всё равно
в чём ошибка? или как вписать туда ещё и путь Users\Anuket\Desktop\New folder\ для поиска ??
#2 Янв. 5, 2013 11:57:18
romis От: Зарегистрирован: 2010-10-04 Сообщения: 20 Репутация: 0 Профиль Отправить e-mail
python не видит файл txt
fm=open(“inimene.txt”, "r")
#3 Янв. 5, 2013 12:12:44
anuket Зарегистрирован: 2013-01-05 Сообщения: 4 Репутация: 0 Профиль Отправить e-mail
python не видит файл txt
#4 Янв. 5, 2013 12:53:09
doza_and От: Зарегистрирован: 2010-08-15 Сообщения: 4138 Репутация: 252 Профиль Отправить e-mail
python не видит файл txt
anuket
или как вписать туда ещё и путь
Никаких путей для поиска файлов при обычном их открывании не предусмотрено.
Обычная история под виндами у людей которые активно используют мышку и explorer — это неожиданная текущая директория (именно там и ищется файл если не указан абсолютный путь).
проверьте какая у вас директория текущая. Для этого выполните
import os print os.getcwd()
Чтобы не было путаницы рекомендую пользоваться НОРМАЛЬНЫМИ утилитами для навигации по директориям и запуска приложений, которые устанавливают текущую директорию ожидаемым образом (far например).
Отредактировано doza_and (Янв. 5, 2013 12:57:16)
Питон не видит файл в директории [закрыт]
Вопрос вызван проблемой, которая больше не воспроизводится, или опечаткой. Хотя похожие вопросы могут быть уместны на этом сайте, решение для этого вопроса вряд ли поможет будущим посетителям. Обычно можно избежать подобных вопросов написанием и исследованием минимальной программы для воспроизведения проблемы до публикации вопроса.
Закрыт 1 год назад .
fileLocation = open("2.txt") print(fileLocation)
Не видит этот файл, хоть он 100% есть и находится в моей директории. Выдает ошибку:
[Errno 2] No such file or directory: ‘2.txt’
Отслеживать
13.7k 12 12 золотых знаков 43 43 серебряных знака 75 75 бронзовых знаков
задан 9 июл 2022 в 20:14
TypicalL L TypicalL L
19 1 1 серебряный знак 6 6 бронзовых знаков
Комментарии не предназначены для расширенной дискуссии; разговор перемещён в чат.
9 июл 2022 в 21:58
файл-то в твоей директории. А питон?
24 авг 2022 в 9:22
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Только что столкнулся с этой проблемой и нашёл решение. Но прежде — если вы работаете в VS Code — проверьте, откуда в терминале запускается файл. Если нужно будет — перейдите в терминале в нужную директорию через команду cd. Или же попробуйте запустить файл не в IDE.
В моём случае оказалось, что VS Code запускал файл из другой папки. Это выглядело так:
- Папка_1
- Папка_2
- Папка_3.1
- Искомый_файл
- Программа.py
VS Code запускал программу, условно, из D:\Папка_1, в то время как нужно было из D:\Папка_1\Папка_2\Папка_3.1. Я узнал это, получив путь файла с помощью следующего кода:
import os, sys # Выводит абсолютный путь программы D:\Папка_1\Папка_2\Папка_3.1\Программа.py print(os.path.abspath(__file__)) # Выводит путь к папке с программой D:\Папка_1\Папка_2\Папка_3.1\ print(os.getcwd())Почему и как VS Code запускал программу не из того файла, в котором она лежала? Понятия не имею.
Если ваша IDE запускает файл не там, где нужно, то вы это узнаете, и увидите, откуда она его запускает второй командой — os.getcwd().
Если это не помогает и путь правильный — проверьте, какие файлы вообще видит программа с помощью следующего кода:
# Выводит список из файлов, лежащих в настоящей директории: ['Искомый_файл', 'Программа.py'] print(os.listdir())Если в выведенном списке будут все имеющиеся в папке файлы за исключением только искомого — то возможно проблема в самом файле.
Функция open. Чтение и запись текстовых файлов в Python
Большие объемы данных хранят не в списках или словарях, а в файлах и базах данных. В этом уроке изучим особенности работы с текстовыми файлами в Python. Такие файлы рассматриваются как содержащие символы и строки.
Бывают еще байтовые (бинарные) файлы, которые рассматриваются как потоки байтов. Побайтово считываются, например, файлы изображений. Работа с бинарными файлами несколько сложнее. Нередко их обрабатывают с помощью специальных модулей Python (pickle, struct).
Функция open
Связь с файлом на жестком диске выполняется с помощью встроенной в Python функции open() . Обычно ей передают один или два аргумента. Первый – имя файла или имя с адресом, если файл находится не в том каталоге, где находится сама программа. Второй аргумент – режим, в котором открывается файл.
Обычно используются режимы чтения ( ‘r’ ) и записи ( ‘w’ ). Если файл открыт в режиме чтения, то запись в него невозможна. Можно только считывать данные. Если файл открыт в режиме записи, то в него можно только записывать данные, считывать нельзя.
Если файл открывается в режиме ‘w’ , то все данные, которые в нем были до этого, стираются. Файл становится пустым. Если не надо удалять существующие в файле данные, тогда следует использовать вместо режима записи, режим дозаписи ( ‘a’ ).
Если файл отсутствует, то открытие его в режиме ‘w’ создаст новый файл. Бывают ситуации, когда надо гарантировано создать новый файл, избежав случайной перезаписи данных существующего. В этом случае вместо режима ‘w’ используется режим ‘x’ . В нем всегда создается новый файл для записи. Если указано имя существующего файла, то будет выброшено исключение. Потери данных в уже имеющемся файле не произойдет.
Если при вызове open() второй аргумент не указан, то файл открывается в режиме чтения как текстовый файл. Чтобы открыть файл как байтовый, дополнительно к букве режима чтения/записи добавляется символ ‘b’ . Буква ‘t’ обозначает текстовый файл. Поскольку это тип файла по умолчанию, то обычно ее не указывают.
Нельзя указывать только тип файла, то есть open(«имя_файла», ‘b’) есть ошибка, даже если файл открывается на чтение. Правильно – open(«имя_файла», ‘rb’) . Только текстовые файлы мы можем открыть командой open(«имя_файла») , потому что и ‘r’ и ‘t’ подразумеваются по-умолчанию.
Функция open() возвращает объект файлового типа. Его надо либо сразу связать с переменной, чтобы не потерять, либо сразу прочитать.
Чтение файла
С помощью файлового метода read() можно прочитать файл целиком или только определенное количество байт. Пусть у нас имеется файл data.txt с таким содержимым:
one - 1 - I two - 2 - II three - 3 - III four - 4 - IV five - 5 - V
Откроем его и почитаем:
>>> f1 = open(‘data.txt’) >>> f1.read(10) ‘one — 1 — ‘ >>> f1.read() ‘I\ntwo — 2 — II\nthree — 3 — III\nfour — 4 — IV\nfive — 5 — V\n’ >>> f1.read() » >>> type(f1.read())
Сначала считываются первые десять символов. Последующий вызов read() считывает весь оставшийся текст. После этого объект файлового типа f1 становится пустым.
Заметим, что метод read() возвращает строку, и что конец строки считывается как ‘\n’ .
Для того, чтобы читать файл построчно существует метод readline() :
>>> f1 = open('data.txt') >>> f1.readline() 'one - 1 - I\n' >>> f1.readline() 'two - 2 - II\n' >>> f1.readline() 'three - 3 — III\n'Метод readlines() считывает сразу все строки и создает список:
>>> f1 = open('data.txt') >>> f1.readlines() ['one - 1 - I\n', 'two - 2 - II\n', 'three - 3 - III\n', 'four - 4 - IV\n', 'five - 5 - V\n']Объект файлового типа относится к итераторам. Из таких объектов происходит последовательное извлечение элементов. Элементами в данном случае являются строки-линии файла. Поэтому считывать данные из файла можно сразу в цикле без использования методов чтения:
>>> for i in open('data.txt'): . print(i) . one - 1 - I two - 2 - II three - 3 - III four - 4 - IV five - 5 - V >>>Здесь выводятся лишние пустые строки, потому что функция print() преобразует ‘\n’ в переход на новую строку. К этому добавляет свой переход на новую строку. Создадим список строк файла без ‘\n’ :
>>> nums = [] >>> for i in open('data.txt'): . nums.append(i[:-1]) . >>> nums ['one - 1 - I', 'two - 2 - II', 'three - 3 - III', 'four - 4 - IV', 'five - 5 - V']Переменной i присваивается очередная строка файла. Мы берем ее срез от начала до последнего символа, не включая его. Следует иметь в виду, что ‘\n’ это один символ, а не два.
Запись в файл
Запись в файл выполняется с помощью методов write() и writelines() . Во второй можно передать структуру данных:
>>> l = ['tree', 'four'] >>> f2 = open('newdata.txt', 'w') >>> f2.write('one') 3 >>> f2.write(' two') 4 >>> f2.writelines(l)Метод write() возвращает количество записанных символов.
Закрытие файла
После того как работа с файлом закончена, важно не забывать его закрыть, чтобы освободить место в памяти. Делается это с помощью файлового метода close() . Свойство файлового объекта closed позволяет проверить закрыт ли файл.
>>> f1.close() >>> f1.closed True >>> f2.closed False
Если файл открывается в заголовке цикла ( for i in open(‘fname’) ), то видимо интерпретатор его закрывает при завершении работы цикла или через какое-то время.
Практическая работа
- Создайте файл data.txt по образцу урока. Напишите программу, которая открывает этот файл на чтение, построчно считывает из него данные и записывает строки в другой файл ( dataRu.txt ), заменяя английские числительные русскими, которые содержатся в списке ( [«один», «два», «три», «четыре», «пять»] ), определенном до открытия файлов.
- Создайте файл nums.txt , содержащий несколько чисел, записанных через пробел. Напишите программу, которая подсчитывает и выводит на экран общую сумму чисел, хранящихся в этом файле.
Примеры решения и дополнительные уроки в pdf-версии курса
X Скрыть Наверх
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 escapep.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Хотя сам файл существует.
- Вопрос задан более трёх лет назад
- 5422 просмотра
4 комментария
Простой 4 комментария
- Папка_3.1
- Папка_2