Materialsproject API检索结构后如何保存为本地cif/txt文件?
解决方法:从Materials Project保存晶体结构到本地
在MyBinder中操作(最适合新手)
你已经成功获取到晶体结构了,只需要在现有代码后面添加保存结构的代码,运行后就能下载到本地:
修改后的完整代码
from mp_api.client import MPRester from pymatgen.symmetry.analyzer import SpacegroupAnalyzer with MPRester(api_key='8dI6UZHs3Nc9lxTp75RrJcPdwvPn6jZb') as mpr: # 获取目标结构 structure = mpr.get_structure_by_material_id('mp-980949') # 转换为常规晶胞结构(推荐,确保米勒指数符合常规标注) sga = SpacegroupAnalyzer(structure) conventional_structure = sga.get_conventional_standard_structure() # 保存为CIF文件(直接可用,无需额外转换) conventional_structure.to("mp-980949_conventional.cif") # 如果一定要存成TXT格式,直接重命名后缀即可: # conventional_structure.to("mp-980949_conventional.txt")
下载文件步骤
- 运行修改后的代码,等待执行完成(无报错即保存成功)
- 点击MyBinder界面左侧的文件夹图标,就能看到生成的
mp-980949_conventional.cif(或txt)文件 - 右键点击该文件,选择Download即可保存到本地电脑
本地Python环境操作(解决"无任何反应"的问题)
你本地运行没反应,大概率是缺少依赖的Python包,按以下步骤操作:
- 打开电脑的命令提示符(Windows)或终端(Mac/Linux)
- 输入以下命令安装所需工具包:
pip install mp-api pymatgen
- 把上面的完整代码复制到本地Python编辑器(比如VS Code、自带的IDLE)中运行
- 生成的文件会保存在你运行代码的文件夹里,直接查找即可
补充说明
- CIF格式本身就是纯文本格式,可直接用记事本打开,不需要额外转换
- 如果需要原始晶胞(非常规晶胞),直接用
structure.to("mp-980949_original.cif")替换常规结构的保存代码即可
内容的提问来源于stack exchange,提问作者Xav
相关产品推荐
相关产品推荐

