deepseek: 批量处理脚本

import os
import shutil
import subprocess
from pathlib import Path

def process_directory(directory, target_base):
    """处理单个目录"""
    print(f"\n处理目录: {directory}")
    
    # 获取目录下所有文件
    files = []
    for f in Path(directory).iterdir():
        if f.is_file():
            # 排除 modeling_tf_ 前缀的文件
            if not f.name.startswith("modeling_tf_"):
                files.append(f)
    
    if not files:
        print(f"目录 {directory} 中没有符合条件的文件,跳过")
        return
    
    # 按文件大小排序(从大到小)
    files.sort(key=lambda f: f.stat().st_size, reverse=True)
    
    # 取最大的两个文件
    top_files = files[:2]
    print(f"找到最大文件: {[f.name for f in top_files]}")
    
    # 处理每个文件
    for file in top_files:
        # 提取 AAA 部分
        if file.name.startswith("modeling_") and file.name.endswith(".py"):
            aaa = file.name[9:-3]  # 去掉 "modeling_" 和 ".py"
        else:
            print(f"跳过非标准文件名: {file.name}")
            continue
        
        print(f"\n处理文件: {file.name} (AAA = {aaa})")
        
        # 创建 AAA_clx 目录
        aaa_clx = Path(f"{aaa}_clx")
        if not aaa_clx.exists():
            aaa_clx.mkdir()
            print(f"创建目录: {aaa_clx}")
        
        # 复制文件到 AAA_clx
        dest_file = aaa_clx / file.name
        shutil.copy(file, dest_file)
        print(f"复制文件到: {dest_file}")
        
        # 进入目录并运行脚本
        os.chdir(aaa_clx)
        print(f"当前工作目录: {os.getcwd()}")
        
        # 运行 splitPy3.py 脚本
        try:
            result = subprocess.run(
                ["python311", "/tmp/splitPy3.py", file.name],
                check=True,
                capture_output=True,
                text=True
            )
            print(f"脚本输出:\n{result.stdout}")
            if result.stderr:
                print(f"脚本错误:\n{result.stderr}")
        except subprocess.CalledProcessError as e:
            print(f"运行脚本失败: {e}")
            print(f"错误输出:\n{e.stderr}")
        
        # 返回上级目录
        os.chdir("..")
        print(f"返回目录: {os.getcwd()}")
        
        # 复制整个目录到目标位置
        target_dir = Path(target_base) / "modelToclx" / aaa_clx
        if not target_dir.parent.exists():
            target_dir.parent.mkdir(parents=True, exist_ok=True)
        
        if target_dir.exists():
            print(f"目标目录已存在,覆盖: {target_dir}")
            shutil.rmtree(target_dir)
        
        shutil.copytree(aaa_clx, target_dir)
        print(f"复制到目标位置: {target_dir}")

def main():
    # 目标目录
    target_base = "/Users/sujingqiao/Documents/homepage/ENV/myenv/source/transformers/src/transformers/models"
    
    # 获取当前目录下所有子目录
    directories = [d for d in Path.cwd().iterdir() if d.is_dir()]
    
    if not directories:
        print("当前目录下没有子目录")
        return
    
    print(f"找到 {len(directories)} 个子目录")
    
    # 处理每个目录
    for directory in directories:
        process_directory(directory, target_base)
    
    print("\n所有处理完成!")

if __name__ == "__main__":
    main()

需求:

 mkdir AAA_clx cp modeling_AAA.py AAA_clx cd AAA_clx python311 /tmp/splitPy3.py modeling_AAA.py cd .. cp -rf AAA_clx /Users/sujingqiao/Documents/homepage/ENV/myenv/source/transformers/src/transformers/models/modelToclx 写一个python脚本,批量化操作 上面这些命令, 其中 AAA 是遍历当前目录下各个文件夹,找到 按大小排序最大两个,且除掉modeling_tf_为前缀那个文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值