shutil.move()文件消失了

时间:2019-01-19 05:45:43

标签: python-3.x shutil

所以我创建了一个基本的shutil.move()补丁程序来在桌面上移动文件。问题是,我为文件指定了一个不存在的目的地(在本例中为“文档”),现在找不到文件。我的问题是,简单地,鉴于此Docs命令不存在,我的文件去了哪里?

for f in files:
    if f.endswith(('.docx', '.doc')):
        shutil.move(os.path.join(root, f), "Docs")
    else:
        continue

1 个答案:

答案 0 :(得分:0)

实际上,根据我的评论(我刚刚测试了您的代码),实际上您在这里所做的是一次接一个文件(f),然后将它们移动到名为“ Docs”的文件中。我还没有测试过多个文件,但是如果每个文件都包含多个文件,那么在根目录中只有一个名为“ Docs”的文件结束之前,您已经对该文件进行了覆盖(覆盖)。 如果我了解您要执行的操作正确,那么您要将文件从当前位置移动到根目录下的另一个目录中。 的代码将是。

shutil.move(os.path.join(root, f), os.path.join(root, "Docs", f))

这还假定存在“文档”。如果没有,那么您的代码将出错。 在执行类似操作之前的一行:

if not os.path.exists(os.path.join(root, "Docs")):
    os.mkdir(os.path.join(root, "Docs"))

我使用的最终代码(假设这是您想要实现的):

import shutil
import os

root =('.') # for the sake of testing, I just used the base directory
files = os.listdir('.') # I also pulled filed from this directory for the sake of testing - I actually tested with a csv file, but the idea remains the same

for f in files:
    if f.endswith((docx', '.doc')):
        if not os.path.exists(os.path.join(root, "Docs")):
            os.mkdir(os.path.join(root, "Docs"))
        shutil.move(os.path.join(root, f), os.path.join(root, "Docs", f))
        print(f)

    else:
        continue