我有一个包含大量子文件夹的大文件夹,每个子文件夹包含一个到多个文件。 我想根据文件名移动其中一些文件。我有一个列表,其中包含我要移动的文件的文件名,所以基本上我想检查mither目录中的每个文件,如果它在列表中的名称,如果是的话 - 将其移动到新目录。
我编写了以下脚本,但不幸的是它没有用。有没有人知道如何修复它,或者更好地建议执行所需功能的脚本?
import os
import shutil
curr_fold = "/Users/ruthersh/Alice/Bacterial_seqs/FAA"
dest = "/Users/ruthersh/Alice/Bacterial_seqs/Plasmids"
for (dirname, dirs, files) in os.walk(curr_fold):
for filename in files:
if (filename[:9]) in NCS:
src = os.path.realpath(filename)
shutil.move(src, dest)
答案 0 :(得分:1)
来自os.walk
上的Python标准库文档:请注意,列表中的名称不包含路径组件。要获取dirpath中文件或目录的完整路径(以top开头),请执行os.path.join(dirpath,name)。所以你应该
src = os.join(dirname, filename)
如果出现问题,请添加一些打印语句以验证src的值,并最终查看真正向shutils
询问的内容。