Python可以在w模式下打开文件,但不是我

时间:2017-01-01 13:08:04

标签: python file

我有两个文件: 的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

2 个答案:

答案 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")