簡體   English   中英

Shuutil.move() 函數將文件移動到我無法打開的文件夾中

[英]Shutil.move() function moved files into a folder which i cant open

我使用shutil.move()函數將一些重要文件移動到所需目錄中。 該目錄不存在,所以我將名稱作為參數指定給我的shutil.move()函數。 執行后,它將文件移動到我無法打開的目錄中(這似乎不是目錄,當看到屬性時,它說它是“文件”)。 你能幫我打開這個文件來提取我的文件嗎?? 代碼是這樣的:

for file in Path("C/Users/Mahum/Downloads").glob(*.exe):
    shutil.move(file, "E/New Folder")

使用零退出代碼執行的代碼但我遇到了那個問題.....

我認為您誤解了 Shutil 可以做什么。

  • 如果目標是一個目錄,那么它會將源文件移動到
    那個目錄。

  • 但是,如果目標不存在,它會將 src 重命名為
    目的地。

  • 如果目標確實存在並且它是一個文件,它將用源文件覆蓋該目標文件。

所以在你的情況下,假設你有 5 個文件。 “E/新文件夾”不存在。 所以在文件循環上

file1 重命名為 E/New Folder(此時 file1 不存在,其內容在 E/New Folder 中)

file2 覆蓋 E/New Folder(file2 被刪除,E/New Folder 現在有 file2 的內容,file1 的內容現在完全丟失)

file3 覆蓋 E/New Folder(file3 被刪除,E/New Folder 現在有 file3 的內容,file2 的內容現在完全丟失)

file4 覆蓋 E/New Folder(file4 被刪除,E/New Folder 現在有 file4 的內容,file3 的內容現在完全丟失)

file5 覆蓋 E/New Folder(file5 被刪除,E/New Folder 現在有 file5 的內容,file4 的內容現在完全丟失)

所以很有可能 E/New Folder 確實是一個文件,它將保存通過 shutil.move 到此目的地的列表文件的內容,並且所有其他文件和內容都將丟失。

你的路徑應該是C:/Users/Mahum/Downloads而不是C/Users/Mahum/Downloads

如果您在移動文件之前沒有創建新文件夾,它可能會將請求視為文件並相互覆蓋。 可能發生的另一件事只是覆蓋在每個文件之上。 如果您沒有備份,您可能已經丟失了文件。 您可以嘗試使用磁盤恢復程序進行恢復。 為操作系統尋找一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM