可能是一个非常棒的问题..
但是 当我尝试:
f = open(os.path.join(os.path.dirname(__file__), filename),"w")
我收到错误
IOError: [Errno 2] No such file or directory: '/home/path/filename'
不是因为我说过“w”..它会写一个新文件,如果它已经不存在了吗?
答案 0 :(得分:3)
错误信息可以像这样重现:
import os
filename = '/home/path/filename'
f = open(os.path.join(os.path.dirname(__file__), filename),"w")
f.close()
# IOError: [Errno 2] No such file or directory: '/home/path/filename'
这里的问题是filename
是绝对路径,所以
os.path.join
忽略第一个参数并返回filename
:
In [20]: filename = '/home/path/filename'
In [21]: os.path.join(os.path.dirname(__file__), filename)
Out[21]: '/home/path/filename'
因此,您不仅要指定不存在的文件,还要指定不存在的目录。 open
拒绝创建目录。
答案 1 :(得分:0)
你是否真的想写home/path/filename
?在这种情况下,它抱怨/home/path
不存在。尝试创建名为/home/path
的目录或在已存在的目录中选择文件名(例如,找出实际主目录的路径。)您还可以使用相对路径。见
http://en.wikipedia.org/wiki/Path_%28computing%29
对于绝对路径和相对路径之间的差异。