我有一个包含文件及其路径的列表。我需要将文件及其整个路径复制或移动到另一个目录或文件夹中。
我尝试如下,但路径无法复制该路径,仅文件正在复制。
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/')
您可能想使用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}')
您可以尝试像下面或其他一些库一样首先创建目录。
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)