2017-01-01 5 views
0

У меня есть два файла: abc.txt test.pyPython может открыть файл в режиме ш, но не Ir

Оба находятся в папке C: \ тест

test.py содержит только одна линия, она пытается открыть текстовый файл:

Когда я бегу test.py я получаю сообщение об ошибке:

C:\Users\stefan>python.exe C:\test\test.py 
Traceback (most recent call last): 
    File "C:\test\test.py", line 1, in <module> 
    f = open("abc.txt", "rt") 
IOError: [Errno 2] No such file or directory: 'abc.txt' 

Теперь я перейти от режима «RT», чтобы «вес» => хорошо нет ошибок больше

меняю обратно в режим «RT» => хорошо, опять же никакой ошибки

Так почему файл не получает только в режиме "wt"? И почему это работает впоследствии, а также в режиме «rt» снова ...?

Я бегу на Python 2.7.13 на Win10

+4

'w' * создает * файл. Если 'r' терпит неудачу, это означает, что в текущем рабочем каталоге * нет такого файла *. –

ответ

0

Вы должны либо дать полный, абсолютный путь к open() или скопировать abc.txt в текущий рабочий каталог, который, кажется, C:\Users\stefan.

open(.., "wt") Успешно, потому что он может создать файл, если он не существует.

0

В основном, когда вы запускаете программу как

C:\Users\stefan>python.exe C:\test\test.py 

питона пытается искать файл abc.txt в каталоге C:\Users\stefan>. Поскольку файл отсутствует, программа не работает.

bc.txt test.py 

Both are in the folder C:\test 

Для программы работают хорошо идти в этот каталог C:\test\ и запустить программу как:

python.exe test.py 

Он будет работать нормально.

Теперь, почему это работает на 2-й раз

Now I change from mode "rt" to "wt" => good no error anymore

I change back to mode "rt" => good, again no error

При изменении режима от «КТ» до «вес» программы создает файл abc.txt в каталоге C:\Users\stefan> и, таким образом, при изменении " wt 'back to' rt 'начинает работать нормально.

я воссоздал свою ошибку в моей программе как этот: структура в моей программе

├── abc 
│   ├── abc.txt 
│   └── prog.py 

Выход выглядит следующим образом:

➜ abc python prog.py #works fine 
➜ abc cd .. 
➜ /tmp python abc/prog.py 
Traceback (most recent call last): 
    File "abc/prog.py", line 1, in <module> 
    f = open("abc.txt", "rt") 
FileNotFoundError: [Errno 2] No such file or directory: 'abc.txt' 

Мой код программы выглядит следующим образом:

➜ /tmp cat abc/prog.py 
f = open("abc.txt", "rt") 
Смежные вопросы