所以我创建了一个基本的shutil.move()补丁程序来在桌面上移动文件。问题是,我为文件指定了一个不存在的目的地(在本例中为“文档”),现在找不到文件。我的问题是,简单地,鉴于此Docs命令不存在,我的文件去了哪里?
for f in files:
if f.endswith(('.docx', '.doc')):
shutil.move(os.path.join(root, f), "Docs")
else:
continue
答案 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