根据文件的文件名,将重复的文件放入另一个目录中

时间:2013-06-07 20:22:26

标签: python

一个文件写一些文件名列表,比如有文件名

f1
f2 
f3

在一个目录中,有许多文件包括那些文件,例如

F2
f1
F3
f2
f3

我想复制出现在文件列表中的文件。我的脚本的错误是* TypeError *,如下所示,

import sys
import shutil,errno
import os
srcDir = 'Root'
dstDir = 'De'
with open('file.txt','r') as f:
 read_filename = f.read()
f.closed
for files in os.walk(srcDir)
  if files in read_filename:
     shutil.move(srcDir,dstDir)

1 个答案:

答案 0 :(得分:1)

您需要将第一个文件转换为(用于快速成员资格测试)。您还使用os.walk,它为您提供三个信息,目录路径,子目录列表以及该目录中文件的列表:

import sys
import shutil,errno
import os
srcDir = 'Root'
dstDir = 'De'

with open('file.txt','r') as f:
    read_filenames = {fname.strip() for fname in f}  # set comprehension

for root, directories, files in os.walk(srcDir):
    for filename in read_filenames.intersection(files):
        shutil.move(os.path.join(root, filename), dstDir)

.intersection()调用会返回read_filenames集中同样位于files列表中的所有元素。

请注意,我根据shutil.move()变量使用dstDir告诉os.path.join()文件的完整路径移至root文件所在目录的路径)和文件名。