open file in “w” mode: IOError: [Errno 2] No such file or directory
当我尝试用以下代码以写模式打开文件时:
给出以下错误:
如果文件不存在,"w"模式应该创建文件,对吗?那么这个错误怎么会发生呢?
如果包含您试图打开的文件的目录不存在,即使在"w"模式下打开该文件,也会看到此错误。
因为您是用相对路径打开文件的,所以您可能对该目录的具体内容感到困惑。尝试快速打印以检查:
1 2 3 4 5 6 7 8 | 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组合路径元素。
例如:
我也有同样的错误,但在我的例子中,原因是,在Windows下,路径长度超过了大约250个字符。
如果试图覆盖到同名文件的断开软链接,也会发生此错误。在这种情况下,删除断开的软链接,您将能够写入新文件。
在Windows环境中也发生了类似的问题。解决方法是在绝对路径中添加"c"。我的目标是在用户桌面上保存一些文件
1 2 3 | file_path = os.path.join(os.environ["HOMEPATH"], os.path.join("Desktop", "log_file.log_%s_%s" %( strftime("%Y_%m_%d", localtime()),"number_1"))) |
然后我试图打开这个目录来保存如
1 | file_ref = open(file_path,"w") |
我添加这个是为了运行
1 | file_ref = open(("C:\"+file_path),"w") |
检查脚本是否对该目录具有写权限。试试这个:
1 | chmod a+w dir/dir2/dir3 |
请注意,这将授予该目录上的所有人写权限。