Копирование определенных файлов из списка в новый каталог с использованием Python - PullRequest
0 голосов
/ 09 апреля 2019

Каков наилучший способ скопировать определенные файлы из списка в новый каталог с помощью python?

Например, у меня есть текстовый документ, содержащий имена файлов, как в примере ниже:

E3004 
D0402 
B9404 
C6089

Я хотел бы выполнить поиск в каталоге и скопировать файлы, которые, как было установлено, существуют, в новый каталог, перечисляя коды, которые не найдены, в новый текстовый документ.

Я новичок в Python, поэтому любая помощь очень ценится.

Вот фрагмент кода из предыдущего обсуждения, который был составлен в качестве решения аналогичной проблемы, однако у меня возникли проблемы с пониманием, где именно разместить пути к моим файлам для документов src, dst и text? Кроме того, есть ли способ сохранить данные, которые не были найдены, в отдельный текстовый документ?

Ссылка на предыдущее обсуждение: https://stackoverflow.com/a/51621897/10580480

import os import shutil from tkinter import * from tkinter import filedialog

root = Tk()
 root.withdraw()

filePath = filedialog.askopenfilename()
 folderPath = filedialog.askdirectory()
 destination = filedialog.askdirectory()

filesToFind = []
 with open(filePath, "r") as fh:
    for row in fh:
        filesToFind.append(row.strip())

filename variable itself for filename in os.listdir(folderPath):
    if filename in filesToFind:
        filename = os.path.join(folderPath, filename)
        shutil.copy(filename, destination)
    else:
        print("file does not exist: filename")

Спасибо

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

Используя glob (см. https://docs.python.org/3/library/glob.html), вы можете искать конкретные имена файлов в каталоге - я использовал его для поиска файлов readme.md из каталога git clones, например:

for readmeFile in glob.glob('FULLPATH/clones/*/readme.md'):

так в вашем случае: цикл через ваш документ, содержащий имена файлов

for readmeFile in glob.glob('FULLPATH/clones/*/' + filename):
0 голосов
/ 09 апреля 2019
for filename in os.listdir('/home/localDir/INPUT/'):
    if filename.startswith("localFileName"):
...