一个文件写一些文件名列表,比如有文件名
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)
答案 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
文件所在目录的路径)和文件名。