以“w”模式打开文件时:IOError: [Errno 2] 没有这样的文件或目录
当我尝试用下面的代码以写入模式打开一个文件时:
packetFile = open("%s/%s/%s/%s.mol2" % ("dir", "dir2", "dir3", "some_file"), "w")
我遇到了以下错误:
IOError: [Errno 2] No such file or directory: 'dir/dir2/dir3/some_file.mol2'
用w
模式打开文件应该是在文件不存在时创建它,对吧?那这个错误怎么会出现呢?
7 个回答
16
我也遇到过同样的错误,但在我的情况下,问题是因为在Windows系统下,路径超过了大约250个字符。
21
因为你没有在路径前加上斜杠,所以你的Python脚本会根据当前的工作目录来寻找这个文件,而不是从文件系统的根目录开始找。另外,要注意,文件之前的文件夹必须是存在的!
还有:使用 os.path.join
来组合路径的各个部分。
比如:os.path.join("dir", "dir2", "dir3", "myfile.ext")
95
如果你看到这个错误,说明你想打开的文件所在的文件夹不存在,即使你是以w
模式打开文件也会出现这个问题。
因为你是用相对路径来打开文件的,所以可能你对那个文件夹的位置有些搞不清楚。试着加一个简单的打印语句来检查一下:
import os
curpath = os.path.abspath(os.curdir)
packet_file = "%s/%s/%s/%s.mol2" % ("dir", "dir2", "dir3", "some_file")
print "Current path is: %s" % (curpath)
print "Trying to open: %s" % (os.path.join(curpath, packet_file))
packetFile = open(packet_file, "w")