0

我有一个带有顺序数字标题的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”。

  • 知道如何在 Python 中执行此操作吗?

谢谢!

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

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)
4

2 回答 2

0

这是一种方法 -

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这是您的来源和目的地路径。在运行循环之前,请确保您位于src路径上。for否则,python 将无法找到该文件。

于 2020-01-27T16:13:27.767 回答
0

与其遍历源目录中的文件,不如遍历您已有的文件名更快。您可以使用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')
于 2020-01-27T16:26:22.430 回答