如何使用Python复制多个文件夹中的多个文件

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

我在一个文件夹中有多个文件(1_ppt.csv,2_ppt.csv,3_ppt.csv等)。我有其对应的空白文件夹为(SIM1,SIM2,SIM3,...)。我想将1_ppt.csv复制到SIM1文件夹,将2_ppt.csv复制到SIM2文件夹,等等。我使用cmd命令尝试过,它有效;但是,它要求文件名和文件夹名相同,因此它没有用。如果能得到python解决方案,我将不胜感激。

到目前为止已使用这些cmd命令。

[for %i in (*) do mkdir "%~ni"]
[for %i in (*) do move "%i" "%~ni"]
python shutil
2个回答
0
投票

假设文件树看起来像这样:

|--PPTs
|   |--1_ppt.csv
|   |--2_ppt.csv
|   .
|   .
|   |--n_ppt.csv
|--SIM1
|--SIM2
.
.
|--SIMN
|--script.py

您可以执行以下操作:

from pathlib import Path
import shutil

base_path = Path.cwd()
ppt_path = base_path.joinpath('PPTs')
for ppt in ppt_path.iterdir():
    ppt_num = ppt.name.split('_')[0]
    out_path = base_path.joinpath(f'SIM{ppt_num}', ppt.name) # e.g. SIM1/ppt_1.csv
    shutil.copy(ppt, out_path)

您还可以通过修改for循环来动态创建目录:

for ppt in ppt_path.iterdir():
    ppt_num = ppt.name.split('_')[0]
    out_folder = base_path.joinpath(f'SIM{ppt_num}')
    # Add this line
    out_folder.mkdir(exist_ok=True)
    out_path = out_folder.joinpath(ppt.name) # e.g. SIM1/ppt_1.csv
    shutil.copy(ppt, out_path)

0
投票
import os
import shutil
src=""
src_files = os.listdir(src)
i=0
for file_name in src_files:
   full_file_name = os.path.join(src, file_name)
   if os.path.isfile(full_file_name)& full_file_name.endswith("_ppt.csv"):
     i+=1
     dirName="SIM"+str(i)
     try:
     # Create target Directory
       os.mkdir(dirName)
     except FileExistsError:

    if not os.path.exists(dirName):
       os.mkdir(dirName)  

    shutil.copy(full_file_name, dirName)

将这个python文件放到您想让SIM文件夹放到的位置,并将src放到您的一个文件夹所在的位置。

© www.soinside.com 2019 - 2024. All rights reserved.