38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
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_*目录下的文件检查完毕,均符合一对一的条件。")
|