2016-06-30 92 views
0

我正在Django項目中,我想替換我的服務器上的文件。一種做法是,如果文件名已經存在並將新文件保存在其位置,則刪除該文件。Python爲什麼文件路徑被認爲是一個目錄

我的問題是我的文件路徑以/data.xlsx結尾被視爲一個目錄。在蟒蛇,os.isfile(路徑)返回false和os.isdir(路徑)返回true,雖然路徑是這樣的:

path = os.path.normpath(os.path.join(settings.MEDIA_ROOT, name)).replace('\\', '/') 

返回類似

"G:/username/path/to/django/project/static/data/data.xlsx" 

os.remove(路徑)返回一個OSError,因爲路徑不是文件路徑。我查了一下,並且對這個文件擁有所有權限(0777)。

我不知道如何讓Python知道這是一個Excel文件,而不是一個目錄。有人能幫我嗎?我沒有任何調試想法。

在此先感謝!

回答

0

路徑名不定義是否某個文件或目錄。如果你喜歡它,你可以命名一個文件"/tmp/my/directory"和一個目錄"/tmp/my/file.xls"。同樣,python不會決定一個路徑是否對應一個文件或一個目錄,它只會檢查。如果python說這個文件對應一個目錄,這意味着你的操作系統說它是一個目錄。無論你的操作系統是嚴重混亂,或者你實際上有一個名爲path的目錄。

提示:這可能是後者。嘗試從path刪除目錄。

+0

好吧,所以我的代碼可能創建了一個名爲data.xlsx的空目錄(很可能因爲我在過去幾天嘗試了數百萬件事情),當我調用shutil.rmtree(path)時,它將其刪除,現在os.remove(路徑)不會導致任何錯誤。並感謝答案btw,我不知道我們可以命名一個擴展名的文件夾。我希望這不是我的操作系統,因爲它非常新,哈哈! –

相關問題