以“w”模式打开文件时:IOError: [Errno 2] 没有这样的文件或目录

82 投票
7 回答
143239 浏览
提问于 2025-04-15 20:10

当我尝试用下面的代码以写入模式打开一个文件时:

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

撰写回答