首页 > 解决方案 > 如何使用 Python For-loop 编写文件

问题描述

我是 SO 和自学 Python 的新手。我正在使用 Pymatgen 学习计算材料科学,我有一个问题一直在努力解决,但在任何地方都找不到答案。我有一个像图片一样的脚本输出列表。

我想使用 for 循环写入不同的文件以进行可视化。我一直在像下面的脚本一样手动编写输出,并希望使用 for 循环来简化脚本并使其看起来更好。

p1 = add_h2o[0]
p1.to(filename = 'Al2O3_0001_9_H2O_P_1.POSCAR.vasp')
p2 = add_h2o[1]
p2.to(filename = 'Al2O3_0001_9_H2O_P_2.POSCAR.vasp')
p3 = add_h2o[2]
p3.to(filename = 'Al2O3_0001_9_H2O_P_3.POSCAR.vasp')
p4 = add_h2o[3]
p4.to(filename = 'Al2O3_0001_9_H2O_P_4.POSCAR.vasp')
p5 = add_h2o[4]
p5.to(filename = 'Al2O3_0001_9_H2O_P_5.POSCAR.vasp')
p6 = add_h2o[5]
p6.to(filename = 'Al2O3_0001_9_H2O_P_6.POSCAR.vasp')
p7 = add_h2o[6]
p7.to(filename = 'Al2O3_0001_9_H2O_P_7.POSCAR.vasp')
p8 = add_h2o[7]
p8.to(filename = 'Al2O3_0001_9_H2O_P_8.POSCAR.vasp')
p9 = add_h2o[8]
p9.to(filename = 'Al2O3_0001_9_H2O_P_9.POSCAR.vasp')
p10 = add_h2o[9]
p10.to(filename = 'Al2O3_0001_9_H2O_P_10.POSCAR.vasp')
p11 = add_h2o[10]
p11.to(filename = 'Al2O3_0001_9_H2O_P_11.POSCAR.vasp')

标签: pythonfor-looppymatgen

解决方案


从您提供的代码中,可以看出您正在将 add_h2o[0] 到 add_h2o[10] 保存在文件中。

您将 add_h2o[ 0 ] 保存在文件 Al2O3_0001_9_H2O_P_ 1 .POSCAR.vasp 中,并将 add_h2o[ 1 ] 保存在文件 Al2O3_0001_9_H2O_P_ 2 .POSCAR.vasp 中,...

你注意到任何模式了吗?

文件的编号始终比您尝试保存的数组中元素的索引大 1。因此,我们可以运行一个从 0 到 10 的循环,对于循环中的每个数字 i,文件的编号将为 i + 1。因此,代码如下。

for i in range(11):
  add_h2o[i].to(filename='Al2O3_0001_9_H2O_P_{}.POSCAR.vasp'.format(i + 1))

这能解决您的问题吗?


推荐阅读