可能是一个非常菜鸟的问题..
但是当我尝试时:
f = open(os.path.join(os.path.dirname(__file__), filename),"w")
我收到一个错误
IOError: [Errno 2] No such file or directory: '/home/path/filename'
是不是因为我说了“w”..如果它还没有,它会写一个新文件吗?
可能是一个非常菜鸟的问题..
但是当我尝试时:
f = open(os.path.join(os.path.dirname(__file__), filename),"w")
我收到一个错误
IOError: [Errno 2] No such file or directory: '/home/path/filename'
是不是因为我说了“w”..如果它还没有,它会写一个新文件吗?
错误消息可以像这样重现:
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
拒绝创建目录。
你是不是要按字面意思写home/path/filename
?在那种情况下,它的抱怨是/home/path
不存在的。尝试在已经存在的目录中创建一个名为的目录/home/path
或选择一个文件名(例如,找出您的实际主目录的路径。)您也可以使用相对路径。
有关绝对路径和相对路径之间的区别,请参见
http://en.wikipedia.org/wiki/Path_%28computing%29 。