更改上述代码,将结果输出到CSV表格中
时间: 2024-03-19 18:46:28 浏览: 18
好的,您可以尝试以下代码:
```python
import os
from ase.io import read
import numpy as np
import csv
# 获取当前目录下所有POSCAR文件
file_list = [f for f in os.listdir('.') if f.endswith('.vasp') or f.endswith('.POSCAR')]
# 创建CSV文件并写入表头
with open('C_atom_positions.csv', mode='w', newline='') as csv_file:
fieldnames = ['POSCAR', 'Avg_X', 'Avg_Y', 'Avg_Z', 'Range_X', 'Range_Y', 'Range_Z']
writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
writer.writeheader()
for file_name in file_list:
# 读取POSCAR文件
structure = read(file_name)
# 获取晶格常数和C原子坐标
lattice = structure.get_cell()
c_coords = structure.get_positions()[structure.get_chemical_symbols() == 'C']
# 计算C原子的平均位置和平均分布范围
avg_position = np.mean(c_coords, axis=0)
avg_range = np.amax(c_coords, axis=0) - np.amin(c_coords, axis=0)
# 将结果写入CSV文件
writer.writerow({'POSCAR': file_name, 'Avg_X': avg_position[0], 'Avg_Y': avg_position[1],
'Avg_Z': avg_position[2], 'Range_X': avg_range[0], 'Range_Y': avg_range[1],
'Range_Z': avg_range[2]})
```
这段代码会读取当前目录下所有的POSCAR文件,计算每个POSCAR晶胞中C原子的平均位置和平均分布范围,并将结果输出到名为`C_atom_positions.csv`的CSV文件中。在这个代码中,我们使用了Python内置的`csv`库来写入CSV文件,并在CSV文件中添加了表头。