python批量提取OSZICAR第一个E0和最后一个E0数值,并将结果输出到CSV
时间: 2024-03-03 20:51:43 浏览: 114
可以使用Python的pandas库和正则表达式库re来批量提取OSZICAR文件中的第一个E0和最后一个E0数值,并将结果输出到CSV文件中。以下是一个示例代码:
```python
import os
import re
import pandas as pd
# 指定OSZICAR文件夹路径和CSV文件路径
oszicar_folder = 'path/to/OSZICAR/folder'
csv_file = 'path/to/output.csv'
# 定义正则表达式模式
pattern = re.compile(r'^\s*E0=\s+([-+]?\d*\.\d+E?[-+]?\d*)\s+E1')
# 遍历OSZICAR文件夹中的所有文件,并提取第一个E0和最后一个E0
data = []
for filename in os.listdir(oszicar_folder):
if filename.startswith('OSZICAR'):
filepath = os.path.join(oszicar_folder, filename)
with open(filepath, 'r') as f:
content = f.read()
match = pattern.search(content)
if match:
data.append([filename, float(match.group(1))])
# 将提取到的数据保存到CSV文件中
df = pd.DataFrame(data, columns=['Filename', 'E0'])
df.to_csv(csv_file, index=False)
```
上述代码中,我们首先指定OSZICAR文件夹路径和CSV文件路径。然后,我们使用re.compile()方法定义正则表达式模式,用于匹配OSZICAR文件中的E0数值。接着,我们使用os.listdir()函数遍历OSZICAR文件夹中的所有文件,并使用正则表达式模式从每个文件中提取第一个E0和最后一个E0数值。最后,我们使用pandas库将提取到的数据保存到CSV文件中,并指定index=False参数以不保存行索引。
阅读全文