我有两个文件: 的abc.txt test.py
两者都在文件夹C:\ test
中test.py只包含一行,它尝试打开文本文件:
f = open("abc.txt", "rt")
当我运行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'
现在我改变了模式&#34; rt&#34;到&#34; wt&#34; =&GT;好的没有错误
我改回模式&#34; rt&#34; =&GT;好,再没有错误
那么为什么文件只能在模式中找到&#34; wt&#34;?以及为什么它之后也会在&#34; rt&#34;再次模式......?
我在Win10上运行Python 2.7.13
答案 0 :(得分:0)
您必须提供open()
的完整绝对路径或将abc.txt
复制到当前工作目录中,该目录似乎为C:\Users\stefan
。
open(.., "wt")
成功,因为如果文件不存在,它可以创建一个文件。
答案 1 :(得分:0)
基本上以
运行程序时C:\Users\stefan>python.exe C:\test\test.py
python尝试在目录C:\Users\stefan>
中查找文件abc.txt。由于文件不存在,程序失败。
bc.txt test.py
Both are in the folder C:\test
要使程序正常工作,请转到此目录C:\test\
并运行程序:
python.exe test.py
它会正常运行。
现在为什么第二次工作
现在我改变了模式&#34; rt&#34;到&#34; wt&#34; =&GT;好的没有错误
我改回模式&#34; rt&#34; =&GT;好,再没有错误
当您从&#39; rt&#39;更改模式时到了&#39; wt&#39;该程序在目录abc.txt
中创建一个文件C:\Users\stefan>
,因此当您更改&#39; wt&#39;回到&#39; rt&#39;它开始工作正常。
我在我的程序中重新创建了错误:程序中的结构
├── 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")