使用列表查找和移动特定文件 - python 2.7

时间:2015-09-28 18:51:32

标签: python list csv set

我见过很多人询问有关搜索文件夹和创建文件列表的问题,但我找不到任何帮助我做相反的事情。

我有一个csv文件,其中包含文件及其扩展名列表(xxx0.laz,xxx1.laz,xxx2.laz等)。我需要阅读此列表,然后在文件夹中搜索这些文件。然后我需要将这些文件移动到另一个文件夹。

到目前为止,我已经使用了csv并创建了一个列表。起初我在列表上遇到了麻烦。每行最后都有一个“\ n”,所以我删除了那些。从我发现的唯一其他例子...... [How do I find and move certain files based on a list in excel?。所以我从列表中创建了一个集合。但是,我不确定为什么或者如果我需要它。

所以这就是我所拥有的:

id = open('file.csv','r')
list = list(id)
list_final = ''.join([item.rstrip('\n') for item in list])
unique_identifiers = set(list_final)

os.chdir(r'working_dir') # I set this as the folder to look through
destination_folder = 'folder_loc' # Folder to move files to
for identifier in unique_identifiers:
    for filename in glob.glob('%s_*' % identifier)"
        shutil.move(filename, destination_folder)

我一直在想这个('%s_ *'%标识符)和glob函数。我没有找到任何这方面的例子,也许需要改变?

当我这么做的时候,我什么也得不到。没有错误,也没有移动实际文件...

也许我会以错误的方式解决这个问题,但这是迄今为止我发现的唯一一件事。

1 个答案:

答案 0 :(得分:0)

真的不难:

for fname in open("my_file.csv").read().split(","):
    shutil.move(fname.strip(),dest_dir)

你不需要很多东西......

如果您只想要源目录中的所有* .laz文件,则根本不需要csv ...

for fname in glob.glob(os.path.join(src_dir,"*.laz")):
    shutil.move(fname,dest_dir)