我一直在尝试编写一些python代码,以便从.txt文件中获取每一行,并在文件夹及其子文件夹中搜索具有该名称的文件。在此之后,我想将该文件复制到预设的目标文件夹中。在
当我测试这段代码时,我可以读取.txt中的所有文件,并且可以显示一个目录及其子目录中的所有文件。当我不得不将从.txt中读取的文件名(如我所说的逐行)与目录文件夹中的所有文件名进行比较,然后将文件复制到那里时,问题就出现了。在
你知道我做错什么了吗?在
import os, shutil
def main():
dst = '/Users/jorjis/Desktop/new'
f = open('/Users/jorjis/Desktop/articles.txt', 'rb')
lines = [line[:-1] for line in f]
for files in os.walk("/Users/jorjis/Desktop/folder/"):
for line in lines:
if line == files:
shutil.copy('/dir/file.ext', '/new/dir')
如果非要我猜的话,我会说
.txt
中的文件包含整个路径。您需要在os.walk
中再添加一点来完全匹配。在再说一次,我不确定
.txt
文件是什么样子的,所以可能是您原来的方法起作用了。如果是这样的话,请仔细看看lines = ...
行。在将文本文件中的文件名与一个包含三个元素的元组进行比较:当前访问文件夹的根路径、该路径中所有子目录名的列表以及该路径中所有文件名的列表。将字符串与元组进行比较将永远不会是真的。您必须将每个文件名与要复制的文件名集进行比较。数据类型
set
在这里很方便。在与
with
语句一起打开一个文件可以确保在控制流离开with
块时该文件被关闭。在代码可能如下所示:
相关问题 更多 >
编程相关推荐