2013-02-13 68 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