当前位置: 首页 > 知识库问答 >
问题:

如何插入方程到Python脚本从txt文件和生成另一个文件?[重复]

上官景铄
2023-03-14

我再次问这个问题,因为我还没有为我的问题找到一个明确的答案。

我有一组方程式:

ref_energy = (K-(C/2)comp(a)) + C/2
form_E2 = relaxed_E_per_atom - ref_energy(comp_x)

我需要一个python脚本使用这两个等式使用txt文件中的值来生成另一个x和y列的值,将绘制这些值。

这是我的txt文件的前几行。config是与四个值关联的结构的名称

comp(a),form_E,comp_x,relaxed_E_per_atom
0,0,0,-8.15382173
1,0,0.33333333,-5.25358563
0.5,0.18614484,0.2,-6.33922213
0.5,-0.69658919,0.2,-6.69231575
0.5,-0.70549249,0.2,-6.69587707

下面是我的脚本,但我不断收到错误,如

Traceback (most recent call last):
  File "attempt_#2.py", line 80, in <module>
    x.append(float(row[0]))
ValueError: could not convert string to float: 'comp(a)'

我假设x值不是configname中的数值,但不确定。

#!/bin/env/python
import numpy as np
import matplotlib.pyplot as plt 
import csv

Columns = 'configname,comp(a),form_E,comp_x,relaxed_E_per_atom'.split(',')
testdata ='''\
comp(a),form_E,comp_x,relaxed_E_per_atom
0,0,0,-8.15382173
1,0,0.33333333,-5.25358563
0.5,0.18614484,0.2,-6.33922213
0.5,-0.69658919,0.2,-6.69231575
0.5,-0.70549249,0.2,-6.69587707
'''

reader = csv.DictReader(StringIO(testdata))
desired_cols = (tuple(row[col] for col in columns) for row in reader)   
x=[]
y=[]
K=-2.69028905
C=-32.65176322
with open('values2.txt','r') as csvfile:
        points = csv.reader(csvfile,delimiter=',')
        for row in points:
            x.append(float(row[0]))
            y.append(float(row[1]))
allpoints=np.loadtxt('hmm.csv',delimiter=',')
ref_energy = (Kend-(Cend/2))*comp(a) + Cend/2
form_E = relaxed_E_per_atom-ref_energy(comp_x)
plt.scatter(x,y, label='Energy')
plt.xlabel('Composition KxC',fontsize=24)
plt.ylabel('Formation Energy per carbon (eV)',fontsize=18)
plt.title('Convex Hull Potassium Graphite')
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)
plt.tight_layout()
plt.ylim(-0.08,0)
plt.xlim(0,1.01)
plt.show()

共有1个答案

麹凯捷
2023-03-14

跳过第一排

with open('values2.txt','r') as csvfile:
        points = csv.reader(csvfile,delimiter=',')
        next(points)
        for row in points:
            x.append(float(row[0]))
            y.append(float(row[1]))
 类似资料:
  • 问题内容: 我想将某些文本行从一个文本文件复制到另一个文件。在我当前的脚本中,当我搜索字符串时,它会随后复制所有内容,如何只复制文本的特定部分?例如,仅在其中包含“ tests / file / myword”的情况下才复制行? 当前代码: 问题答案: 单线: 推荐搭配: 使用更少的内存:

  • 如何将一个文本文件复制到另一个文本文件中?我试过这个: 这只是在中留下以下值:。 我做错了什么?

  • 问题内容: 我的问题是我想从另一个python文件中执行一个带有参数的python文件以获得返回值…。 我不知道我是否解释得很好… 例: 从外壳执行以下命令: 这会给我返回照相机清单。 所以我怎么能从另一个脚本中调用这个脚本(包括参数)呢? 我一直在尝试通过阅读此处的其他一些问题自己弄清楚,但是我做得不好,我应该使用execfile()函数吗?究竟如何? 在此先感谢您对像我这样的新手的帮助!! 好

  • 我希望有人会花时间帮助我。我是Java新手,正在上一堂课尝试学习它。我有一个任务,我已经开始和删除了可能30次。我就是不喜欢这个。作业如下: 从txt文件中读取3列整数。一列有学生号,一列是作业的分数,第三列是作业的最大可能分数。(各10分学生5人)。 我必须至少使用1个数组。 列出从作业中获得的总分数,并合计5名学生在10项作业中每个人可能获得的最高分数。然后将学生号、分数、作业的最大可能分数、

  • 我已经创建了一个程序,其中有一个名为groups.txt.的文件这个文件包含一个名称列表。要删除一个组,它必须存在于文件中。我使用Scanner方法在每一行中搜索名称。如果它包含该行,它将val设置为1。这会触发val==1条件。在此块期间我想做的,是尝试从groups.txt文件中删除groupName。为此,我创建了一个名为TempFile的新txt文件,它复制了groups.txtEXCEP

  • 我使用groovy脚本中的方法创建了一个自定义dsl命令链。我从另一个groovy文件访问此命令链时遇到问题。是否有实现功能的方法? 我尝试过使用“evaluate”,它可以加载groovy文件,但无法执行命令链。我尝试过使用GroovyShell类,但无法调用这些方法。 我这里有一个小房间。groovy中执行“please show the cube\u root of 1000”会产生10的结