from pathlib import Path import shutil # 设置源目录和目标目录模板 src_dir = Path('./newfix') dest_dir_template = Path('./pdb_test1/runner_{pdb_id}') # 查找所有符合模式的文件 for file_path in src_dir.glob('*.modellerfix.pdb'): # 提取PDB ID pdb_id = file_path.stem.split('.')[0] # 设置目标目录 dest_dir = dest_dir_template.with_name(dest_dir_template.name.format(pdb_id=pdb_id)) # 确保目标目录存在 dest_dir.mkdir(parents=True, exist_ok=True) # 复制文件 shutil.copy(file_path, dest_dir / file_path.name) # 检查和统计文件 count = 0 for pdb_id in src_dir.glob('*.modellerfix.pdb'): pdb_id = pdb_id.stem.split('.')[0] dest_dir = dest_dir_template.with_name(dest_dir_template.name.format(pdb_id=pdb_id)) if (dest_dir / pdb_id).exists(): count += 1 print(f"共复制并核对了 {count} 个文件") # 遍历pdb_test1下的所有runner_*目录 for runner_dir in Path('./pdb_test1').glob('runner_*'): pdb_id = runner_dir.name.split('_')[1] files = list(runner_dir.glob(f'{pdb_id}.modellerfix.pdb')) # 确保每个目录中恰有一个匹配的文件 assert len(files) == 1, f"目录 {runner_dir} 中找到了 {len(files)} 个匹配的文件,期望是 1 个" print("所有runner_*目录下的文件检查完毕,均符合一对一的条件。")