Python:如何将具有特定名称的文件移动到具有相同名称的文件夹中
我的工作目录中有很多文件和文件夹(类似的情况): 因此,文件和子文件夹都以Python:如何将具有特定名称的文件移动到具有相同名称的文件夹中,python,directory,operating-system,Python,Directory,Operating System,我的工作目录中有很多文件和文件夹(类似的情况): 因此,文件和子文件夹都以AAA或BBB开头(以CCC、DDD等开头)。我想做的是一个python脚本,它将所有AAA文件移动到AAA子文件夹,并对所有同名文件和子文件夹进行迭代,以获得如下结果: AAA_SUBFOLDER - AAA_FILE_1 - AAA_FILE_2 BBB_SUBFOLDER - BBB_FILE_1 - BBB_FILE_2 ... 你能帮我吗?提前谢谢 此解决方案应能满足您的要求。 步骤: 确保已安
AAA
或BBB
开头(以CCC、DDD等开头)。我想做的是一个python脚本,它将所有AAA
文件移动到AAA
子文件夹,并对所有同名文件和子文件夹进行迭代,以获得如下结果:
AAA_SUBFOLDER
- AAA_FILE_1
- AAA_FILE_2
BBB_SUBFOLDER
- BBB_FILE_1
- BBB_FILE_2
...
你能帮我吗?提前谢谢 此解决方案应能满足您的要求。 步骤:
python main.py-p“D:\path\to\files”-D“\uu”
import os
import argparse
from pathlib import Path
def parse_args() -> tuple:
ap = argparse.ArgumentParser()
ap.add_argument("-p", "--path", default="./files", help="path to the folder that needs organizing")
ap.add_argument("-d", "--delimiter", default="_", help="delimiter of file names")
return ap.parse_args()
args = parse_args()
for filename in os.listdir(args.path):
file_path = os.path.join(args.path, filename)
if not os.path.isfile(file_path):
continue
subfolder_name = Path(filename).stem.split(args.delimiter)[0]
subfolder_path = os.path.join(args.path,subfolder_name)
os.makedirs(subfolder_path, exist_ok=True)
os.rename(file_path, os.path.join(subfolder_path, filename))
这是我使用
pathlib
rename;)的解决方案脚本假定当前路径是包含文件和文件夹的路径
#使用pathlip
从集合导入defaultdict
从pathlib导入路径
TARGET_DIR=路径('.')#脚本DIR
文件和文件夹=TARGET\u DIR.rglob('*'))
#使用文件和文件夹进行存储
存储=默认dict(列表)
对于文件和文件夹中的blob:
如果blob.is_file():
存储['files'].append(blob)
elif blob.is_dir():
存储['dir'].append(blob)
#对于每个目录,检查文件前3个字符
#如果匹配,则按重命名移动
对于存储['dir']中的目录:
对于存储['files']中的文件:
如果file.name[:3]==directory.name[:3]:
重命名(目录/文件)
#你也可以看看舒蒂尔
到目前为止,您尝试了什么?你遇到什么问题了吗?谢谢你,我真的很感谢你的帮助。它非常有效!谢谢你的帮助!
import os
import argparse
from pathlib import Path
def parse_args() -> tuple:
ap = argparse.ArgumentParser()
ap.add_argument("-p", "--path", default="./files", help="path to the folder that needs organizing")
ap.add_argument("-d", "--delimiter", default="_", help="delimiter of file names")
return ap.parse_args()
args = parse_args()
for filename in os.listdir(args.path):
file_path = os.path.join(args.path, filename)
if not os.path.isfile(file_path):
continue
subfolder_name = Path(filename).stem.split(args.delimiter)[0]
subfolder_path = os.path.join(args.path,subfolder_name)
os.makedirs(subfolder_path, exist_ok=True)
os.rename(file_path, os.path.join(subfolder_path, filename))