-1

我有一个包含很多子文件夹的大文件夹,每个子文件夹都包含一到几个文件。我想根据文件名移动其中一些文件。我有一个包含我要移动的文件的文件名的列表,所以基本上我想检查 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)
4

1 回答 1

1

来自 Python 标准库文档os.walk请注意,列表中的名称不包含路径组件。要获取 dirpath 中文件或目录的完整路径(以 top 开头),请执行 os.path.join(dirpath, name)。所以你应该有

src = os.join(dirname, filename)

如果出现问题,请添加一些打印语句以验证 src 的值,并最终 dest 以查看您真正要求的内容shutils

于 2014-06-01T15:28:34.940 回答