将文件以及文件路径从列表复制到文件夹或其他路径

问题描述 投票:0回答:2

我有一个包含文件及其路径的列表。我需要将文件及其整个路径复制或移动到另一个目录或文件夹中。

我尝试如下,但路径无法复制该路径,仅文件正在复制。

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/')
python copy shutil
2个回答
0
投票

您可能想使用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}')

0
投票

您可以尝试像下面或其他一些库一样首先创建目录。

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)
© www.soinside.com 2019 - 2024. All rights reserved.