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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以“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”模式应该创建文件,对吧?那么这个错误怎么会发生呢?

答案

如果包含您尝试打开的文件的目录不存在,即使尝试以“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")
另一答案

由于您没有“起始”斜杠,因此您的python脚本将查找相对于当前工作目录的此文件(而不是文件系统的根目录)。另请注意,导致该文件的目录必须存在!

并且:使用os.path.join来组合路径的元素。

例如:os.path.join("dir", "dir2", "dir3", "myfile.ext")

另一答案

我有同样的错误,但在我的情况下,原因是在Windows下,路径超过~250个字符。

另一答案

检查脚本是否具有该目录的写权限。试试这个:

chmod a+w dir/dir2/dir3

请注意,这将为该目录中的每个人提供写入权限。

另一答案

在Windows环境中发生了类似的问题。解决方案是将“C:”添加到绝对路径。我的目标是在用户桌面中保存一些文件

file_path = os.path.join(os.environ["HOMEPATH"], os.path.join("Desktop", 
    "log_file.log_%s_%s" %(
    strftime("%Y_%m_%d", localtime()), "number_1")))

然后我试图打开这个目录来保存

file_ref = open(file_path, "w")

我添加了这个以便运行

file_ref = open(("C:\"+file_path), "w")
另一答案

如果您尝试将损坏的软链接覆盖到具有相同名称的文件,也会发生此错误。在这种情况下,删除损坏的软链接,您就可以编写新文件。

以上是关于以“w”模式打开文件:IOError:[Errno 2]没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章

用python打开文件总是出现IOError怎么回事?

IOError: [Errno 22] 使用 pandas.read_excel 的无效模式 ('rb')

IOError: [Errno 22] invalid mode ('rb') or filename: 'F:\netData1.mat'

python smbus IOError: [Errno 2] No such file or directory

open() 给出 FileNotFoundError/IOError: Errno 2 No such file or directory

机器人框架[错误]意外错误:IOError:[Errno 0]错误