2010-03-08 164 views
31

當我嘗試在模式用下面的代碼打開一個文件:打開文件:IO錯誤:[錯誤2]沒有這樣的文件或目錄

packetFile = open("%s/%s/%s/%s.mol2" % ("dir", "dir2", "dir3", "some_file"), "w")

給我以下錯誤:

IOError: [Errno 2] No such file or directory: 'dir/dir2/dir3/some_file.mol2'

,如果它不存在,右側的「W」模式,應該創建文件?那麼這個錯誤怎麼會發生呢?

回答

33

你會看到這個錯誤,如果包含目錄你試圖打開不存在的文件,試圖打開「W」模式下的文件也是如此。

由於您使用相對路徑打開文件,因此您可能會對該目錄的內容感到困惑。嘗試把一個快速打印檢查:

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") 
1

檢查腳本是否具有該目錄的寫入權限。試試這個:

chmod a+w dir/dir2/dir3 

請注意,這將給該目錄上的每個人寫入權限。

+2

-1;這不是OP錯誤的可能原因。如果你沒有對目錄的寫權限,Python會給你'IOError:[Errno 13]權限被拒絕:'testdir/foo',而不是'沒有這樣的文件或目錄'錯誤。 – 2016-01-06 18:52:29

14

由於您沒有「開始」斜槓,因此您的python腳本正在查找與當前工作目錄相關的文件(而不是文件系統的根目錄)。另請注意,文件前的目錄必須存在!並且:使用os.path.join來組合路徑的元素。

例如爲:os.path.join("dir", "dir2", "dir3", "myfile.ext")

1

我有同樣的錯誤,但在我的情況的原因是,在Windows下,路徑比250〜字符。

+0

我也發現它是Windows路徑長度問題。 – blueray 2018-03-08 10:25:24

0

在Windows環境中發生了類似的問題。解決方案是將「C:」添加到絕對路徑。 我的目標是保存在用戶的一些文件桌面

file_path = os.path.join(os.environ["HOMEPATH"], os.path.join("Desktop", 
    "log_file.log_%s_%s" %(
    strftime("%Y_%m_%d", localtime()), "number_1"))) 

然後我試圖打開該目錄保存 如

file_ref = open(file_path, "w") 

我才能運行

file_ref = open(("C:\\"+file_path), "w") 
加入這個
相關問題