69 lines
2.8 KiB
Python
69 lines
2.8 KiB
Python
from pymatgen.core import Structure
|
||
from pymatgen.core.periodic_table import Element, Specie
|
||
from pymatgen.io.cif import CifWriter
|
||
from crystal_2 import crystal
|
||
import crystal_2
|
||
import os
|
||
import shutil
|
||
|
||
|
||
def read_files_check_basic(folder_path):
|
||
file_contents = []
|
||
|
||
if not os.path.exists(folder_path):
|
||
print(f"{folder_path} 文件夹不存在")
|
||
return file_contents
|
||
|
||
for filename in os.listdir(folder_path):
|
||
file_path = os.path.join(folder_path, filename)
|
||
|
||
if os.path.isfile(file_path):
|
||
try:
|
||
temp = crystal(file_path)
|
||
file_contents.append(temp)
|
||
except Exception as e:
|
||
print(e)
|
||
continue # 如果出错跳过当前循环,避免temp未定义报错
|
||
|
||
print(f"正在处理{filename}")
|
||
temp.check_basic()
|
||
|
||
if temp.check_basic_result:
|
||
# 获取不带后缀的文件名,用于创建同名文件夹
|
||
file_base_name = os.path.splitext(filename)[0]
|
||
|
||
if not "+" in temp.anion:
|
||
# 单一阴离子情况
|
||
# 路径变为: ../data/after_step1/Anion/FileBaseName/
|
||
base_anion_folder = os.path.join("../data/after_step1", f"{temp.anion}")
|
||
target_folder = os.path.join(base_anion_folder, file_base_name)
|
||
|
||
if not os.path.exists(target_folder):
|
||
os.makedirs(target_folder)
|
||
|
||
# 目标文件路径
|
||
target_file_path = os.path.join(target_folder, filename)
|
||
# 复制文件到目标文件夹
|
||
shutil.copy(file_path, target_file_path)
|
||
print(f"文件 {filename}通过基本筛选,已复制到 {target_folder}")
|
||
else:
|
||
# 混合阴离子情况
|
||
anions = temp.anion.split("+")
|
||
for anion in anions:
|
||
# 路径变为: ../data/after_step1/AnionCombination/Anion/FileBaseName/
|
||
base_group_folder = os.path.join("../data/after_step1", f"{temp.anion}")
|
||
base_anion_folder = os.path.join(base_group_folder, anion)
|
||
target_folder = os.path.join(base_anion_folder, file_base_name)
|
||
|
||
if not os.path.exists(target_folder):
|
||
os.makedirs(target_folder)
|
||
|
||
# 目标文件路径
|
||
target_file_path = os.path.join(target_folder, filename)
|
||
# 复制文件到目标文件夹
|
||
shutil.copy(file_path, target_file_path)
|
||
print(f"文件 {filename}通过基本筛选,已复制到 {target_folder}")
|
||
|
||
|
||
if __name__ == "__main__":
|
||
read_files_check_basic("../data/input") |