Скопируйте файлы вместе с путями файлов из списка в папку или другой путь - PullRequest
0 голосов
/ 01 мая 2020

У меня есть список, содержащий файлы вместе с их путями. Мне нужно скопировать или переместить файлы с полным путем в другой каталог или папку.

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

import shutil
list_l1 = ['/home/Test//A/Aa/hello1.c', '/home/Test/C/Aa/hello1.c', '/home/Test/B/Aa/hello1.c']
for source in list_l1:
    shutil.move(source, '/home/Test/sample_try/sample/')

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

Сначала вы можете попробовать создать каталоги, как показано ниже, или какую-нибудь другую библиотеку.

import shutil
from pathlib import Path

list_l1 = ['./A/Aa/hello1.c', './B/Aa/hello1.c']
new_parent = './C'

for source in list_l1:
    path_list = source.split('/')
    file = path_list.pop()
    new_path = path_list.pop(0)
    dirs = '/'.join(path_list)
    p = new_parent + '/' + dirs  + '/'
    path = Path(p)
    path.mkdir(parents=True, exist_ok=True)
    shutil.move(source, p)
0 голосов
/ 01 мая 2020

Возможно, вы захотите использовать os.makedirs() для создания вложенных каталогов. Возможно, вы захотите сначала разделить пути в вашем list_l1 на части каталога и имени файла и использовать os.path.exists(), чтобы проверить, существует ли каталог, прежде чем пытаться его создать.

Вы можете попробовать:

import shutil
import os

list_l1 = ['/home/Test//A/Aa/hello1.c', '/home/Test/C/Aa/hello1.c', '/home/Test/B/Aa/hello1.c']
dest = '/home/Test/sample_try/sample'
for source in list_l1:
    dirname, filename = os.path.split(source)
    if not os.path.exists(f'{dest}/{dirname}'):
        os.makedirs(f'{dest}/{dirname}')
    shutil.copy(source, f'{dest}/{source}')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...