如何将列表与文件名匹配,然后将匹配的文件移动到 Python 中的新目录?

How to match a list to file names, then move matched files to new directory in Python?

我有一个包含 90,000 PDF 文档 的文件夹,其中包含顺序数字标题 (e.g. 02.100294.PDF)。我从该文件夹中提取了大约 70,000 文章标题 的列表。我想构建一个 Python 程序,将列表中的标题与文件夹中的标题进行匹配,然后将匹配的文件移动到 new 文件夹中。

例如,假设我在 "FOLDER";

中有以下文件
1.100.PDF
1.200.PDF
1.300.PDF
1.400.PDF

然后,我有一个包含以下标题的列表

1.200.PDF
1.400.PDF

我想要一个程序将列表 (1.200 and 1.400) 中的两个文档标题与 FOLDER 中的文档相匹配,然后将这两个文件移动到 "NEW_FOLDER"。

谢谢!

编辑:这是我目前拥有的代码。源目录是 'scr','dst' 是新的目的地。 "Conden_art" 是我要移动的文件列表。我正在尝试查看 'scr' 中的文件是否与 'conden_art' 中列出的名称匹配。如果是,我想将其移动到 'dst'。现在,代码找不到匹配项,只打印 'done'。这个问题不同于仅仅移动文件,因为我需要将文件名匹配到一个列表,然后移动它们。

import shutil
import os

for file in scr:
    if filename in conden_art:
        shutil.copy(scr, dst)
    else:
        print('done')

已解决!

这是我使用的最终有效的代码。感谢您的帮助!

import shutil
import os
import pandas as pd

scr = filepath-1
dst = filepath-2

files = os.listdir(scr)

for f in files:
    if f in conden_art:
        shutil.move(scr + '\' + f, dst)

这是一种方法 -

from os import listdir
from os.path import isfile, join
import shutil

files = [f for f in listdir(src) if isfile(join(src, f))] # this is your list of files at the source path

for i in Conden_art:
    if i in files:
       shutil.move(i,dst+i)  # moving the files in conden_art to dst/

srcdst 这是您的源路径和目标路径。确保您位于 运行 for 循环之前的 src 路径。否则,python 将无法找到该文件。

与其循环遍历源目录中的文件,循环遍历您已有的文件名会更快。您可以使用 os.path.exists() 检查文件是否可以移动。

from os import path
import shutil

for filename in conden_art:
    src_fp, dst_fp = path.join(src, filename), path.join(dst, filename)
    if path.exists(filepath):
        shutil.move(src_fp, dst_fp)
        print(f'{src_fp} moved to {dst}')
    else:
        print(f'{src_fp} does not exist')