我一直在尝试编写一些python代码,以便从.txt文件中获取每一行,并在文件夹及其子文件夹中搜索具有该名称的文件。在此之后,我想将该文件移动到预设的目标文件夹中。
我已经尝试了以下代码,这些代码仅在堆栈溢出时发布,但它似乎无法正常工作,我无法找出问题。任何帮助都将受到高度赞赏:
import os
import shutil
def main():
destination = '/Users/jorjis/Desktop/new'
with open('/Users/jorjis/Desktop/articles.txt', 'r') as lines:
filenames_to_copy = set(line.rstrip() for line in lines)
for root, _, filenames in os.walk('/Users/jorjis/Desktop/folder/'):
for filename in filenames:
if filename in filenames_to_copy:
shutil.copy(os.path.join(root, filename), destination)
答案 0 :(得分:0)
没有任何调试输出(你现在已经获得)我只能猜到os.walk
的一个常见缺陷:filenames
中返回的文件名就是这样,文件名没有任何路径。如果您的文件包含带路径的文件名,则它们永远不会匹配。请改用:
if os.path.join(root, filename) in filenames_to_copy:
shutil.copy(os.path.join(root, filename), destination)