腳本我寫信是爲了單獨日的目錄從原來的位置移到新的位置,這樣的結構:的Python shutil.move:奇softlinking
/old/YYYY/MM/DD
/new/YYYY/MM/DD
和另一項任務(無關移動數據的)我喜歡這個新位置創建一個符號鏈接(這是我犯了第一個錯誤):
/new/2011/09 -> /old/2011/09
我的劇本必要使用此函數調用:
for d in os.listdir("/old/2011/09"):
shutil.move(os.path.join("/old/2011/09/", d), os.path.join("/new/2011/09", d))
運行我的腳本2011/09後兩者都是空的。我曾發生這種情況與未歸檔的數據一起工作...大問題。 我的問題是爲什麼沒有shutil.move()給我一個錯誤,我移動的日子目錄已經存在了?由於軟鏈接,09內的每一天都應該是同一個目錄。
/new/2011/09/01 == /old/2011/09/01
不將shutil.move調用檢查調用shutil.copy2前的源和目的?從文檔:「目標目錄不能已經存在。」或者只有當它使用重命名時如果它有所作爲,舊的和新的位置都是glusterfs。
感謝任何清晰,你可以提供。
編輯/更新:我向python-list提交了一個問題,詢問爲什麼這種行爲存在並詢問是否應該更改(list archive)。他們建議我提交一份錯誤報告。在進行測試來提交bug時,我發現這已經在Python 2.7中修復了。您可以在移動函數聲明中看到源文件中的差異:Python 2.6和Python 2.7。
這仍然做移動/重命名,但不會奇蹟般地刪除整個目錄。
'如果目標已經存在但不是目錄,則可能會根據os.rename()語義覆蓋它。「似乎您必須檢查文件是否存在。 – Griffin