2014-09-19 3 views
2

Сводка: Как прочитать файл в Python? Почему так должно быть сделано?FileNotFoundError: [Errno 2]

Моя проблема заключается в том, что я получаю следующее сообщение об ошибке:

Traceback (most recent call last): 
    File "C:\Users\Terminal\Desktop\wkspc\filetesting.py", line 1, in <module> 
    testFile=open("test.txt") 
FileNotFoundError: [Errno 2] No such file or directory: 'test.txt' 

Что происходит из следующего кода: (то есть весь '.py' файл)

testFile=open("test.txt") 
print(testFile.read()) 

«test.txt "находится в той же папке, что и моя программа. Я новичок в Python и не понимаю, почему я получаю ошибки в местоположении файла. Я хотел бы знать, что исправить, и почему исправление должно быть сделано таким образом.

Я попытался использовать абсолютный путь к файлу, "C: \ Users \ Terminal \ Desktop \ wkspc \ test.txt"

Другие детали:

"Python 3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 10:38:22) [MSC v.1600 32 bit (Intel)] on win32" 
Windows 7, 32 Bit 
+3

Похоже на причины. 1. Для использования '' test.txt '', как вы вызываете свой скрипт python? 2. Для использования полного пути вы избегаете экранирования символов (например, с помощью «r» C: \ Users \ Terminal \ Desktop \ wkspc \ test.txt "' обратите внимание на 'r') – starrify

+0

Можете ли вы показать нам команду вы используете для запуска python со своим скриптом? –

+1

Если вы хотите использовать Python для загрузки 'test.txt' из того же каталога, что и скрипт python, вы должны быть в этом каталоге при запуске python. Мое единственное предположение, что вы запускаете скрипт python из другого места –

ответ

11

Поскольку вы используете IDLE (GUI), сценарий не может быть запущен из каталога, где находится сценарий. Я думаю, что лучшая альтернатива пойти что-то вроде:

import os.path 

scriptpath = os.path.dirname(__file__) 
filename = os.path.join(scriptpath, 'test.txt') 
testFile=open(filename) 
print(testFile.read()) 

os.path.dirname(__file__) найти каталог, в котором в настоящее время работает скрипт находится. Затем он использует os.path.join для добавления test.txt с этим путем.

Если это не сработает, я могу только догадываться, что test.txt не находится в том же каталоге, что и выполняемый вами скрипт.

+1

Это сработало, спасибо! Надеюсь, я смогу отступить от этого исправления, как только я получу образование. – ThisGuy

+0

Обычно вы указываете полный путь имени файла, как упомянуто starrify (что, по их мнению, тоже сработало), и это решило бы проблему. Этот код будет работать независимо от того, как запускается скрипт и откуда (по другому пути). –

Смежные вопросы