我在一个文件夹中有多个文件(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"]
假设文件树看起来像这样:
|--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)
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放到您的一个文件夹所在的位置。