Как сопоставить список с именами файлов, а затем переместить сопоставленные файлы в новый каталог в Python? - PullRequest
0 голосов
/ 27 января 2020

У меня есть папка 90,000 PDF-документов с порядковыми номерами c заголовков (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' имени, указанному в 'carbon_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)

Ответы [ 2 ]

0 голосов
/ 27 января 2020

Вместо того, чтобы перебирать файлы в исходном каталоге, было бы быстрее l oop через имена файлов, которые у вас уже есть. Вы можете использовать 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')
0 голосов
/ 27 января 2020

Вот способ сделать это -

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/

src и dst вот ваши пути для источника и пункта назначения. Перед запуском for l oop убедитесь, что вы находитесь на пути src. В противном случае python не сможет найти файл.

...