我正在学习Python,我制作了一个脚本,搜索包含“关键字”的几行,然后在新文件中写入/打印(先前)选择的列表行(我使用第二个参数来选择列表中的一行)。
一切顺利,直到我尝试添加语句,以防我选择的列表行是>比实际的len(列表)然后选择list_line = len(list);无论出于何种原因,它都不起作用。
任何人都可以指出它为什么不起作用,这是我的剧本。万分感谢您的帮助。 (这里是a link,其中包含我用作输入的文件示例)
import sys
import re
filename = sys.argv[1]
line_select = int(sys.argv[2])
newfile = str(filename) + ".3d"
openold = open(filename,"r")
opennew = open(newfile,"w")
rline = openold.readlines()
energies = []
line_number = 0
for line in rline:
line_number += 1
if re.search( r"SCF Done", line ):
words = line.split()
energy = float( words[4] )
energies.append(str(line_number) + " : " + "The energy of the molecule is %f kcal mol-1" % energy)
len_list = len(energies)
if line_select > len_list:
line_select = len_list
print >>opennew, energies[line_select]
openold.close()
opennew.close()
答案 0 :(得分:4)
energies
列表的最后一个元素实际上是energies[len_list-1]
,因为Python索引从0开始。
因此,如果您要打印“energies
的最后一个元素”,则需要将line_select
初始化为小于列表长度的一个:
if line_select >= len_list:
line_select = len_list-1