2013-02-13 70 views
2

可能是一个非常noob问题的文件..无法用Python语言编写

但 当我尝试:

f = open(os.path.join(os.path.dirname(__file__), filename),"w") 

我得到一个错误

IOError: [Errno 2] No such file or directory: '/home/path/filename' 

不是它,因为我有说“W”..它会写一个新的文件,如果它不在那里?

回答

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拒绝创建目录。

+0

@unutbu ..我该如何解决这个问题?我想实现的是..无论从哪里执行代码..该文件将被保存在服务器上的正确位置? – Fraz 2013-02-13 18:34:43

+0

@Fraz:尝试定义'filename ='filename''而不是绝对路径。这将导致'os.path.join(...,filename)'将文件放置在与脚本相同的目录中。 – unutbu 2013-02-13 18:36:31

0

你是想字面上写home/path/filename?在这种情况下,它抱怨/home/path不存在。尝试创建一个名为/home/path的目录或在已存在的目录中选择一个文件名(例如,找出实际主目录的路径)。您也可以使用相对路径。请参阅
http://en.wikipedia.org/wiki/Path_%28computing%29
了解绝对和相对路径之间的差异。

+0

嗨。感谢查看我的查询..主页/路径在那里..但只是文件名不存在?多数民众赞成我想写什么? – Fraz 2013-02-13 18:29:36