Shutil.move() 函数将文件移动到我无法打开的文件夹中

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

我使用了shutil.move()函数将一些重要的文件移动到所需的目录中。该目录不存在,所以我将名称作为参数提供给 shutil.move() 函数。执行后,它将文件移动到我无法打开的目录中(这似乎不是目录,当看到属性时它说它是 "File")。你能帮我打开这个文件来提取我的文件吗?? 代码是这样的:

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

代码以零退出代码执行,但我遇到了那个问题......

你的路径应该是 C:/Users/Mahum/Downloads 而不是 C/Users/Mahum/Downloads

我认为您误解了 shutil 的功能。

  • 如果目标是一个目录,那么它会将源文件移动到
    那个目录。

  • 但是如果目的地不存在,它会将 src 重命名为
    目的地。

  • 如果目标确实存在并且它是一个文件,它将覆盖那个 dest 文件与源文件。

所以在你的情况下,假设你有 5 个文件。 "E/New Folder" 不存在。所以在文件循环上

file1 重命名为 E/New 文件夹(此时 file1 不存在,其内容在 E/New 文件夹中)

file2 覆盖 E/New 文件夹(file2 被删除,E/New 文件夹现在有 file2 的内容,file1 的内容现在完全丢失)

file3 覆盖 E/New 文件夹(file3 被删除并且 E/New 文件夹现在包含 file3 的内容并且 file2 的内容现在完全丢失)

file4 覆盖 E/New 文件夹(file4 被删除,E/New 文件夹现在有 file4 的内容,file3 的内容现在完全丢失)

file5 覆盖 E/New 文件夹(file5 被删除,E/New 文件夹现在有 file5 的内容,file4 的内容现在完全丢失)

所以可能 E/New 文件夹确实是一个文件,它将保存通过 shutil.move 到达此目的地的列表文件的内容,所有其他文件和内容都将丢失。

如果您在移动文件之前没有创建新文件夹,它可能会将请求视为文件并相互覆盖。另一件可能发生的事情只是覆盖了每个文件的顶部。如果您没有备份,您可能已经丢失了文件。您可以尝试使用磁盘恢复程序进行恢复。为 OS 寻找一个。