0

我正在学习 Python,我制作了一个脚本,它搜索包含“关键字”的几行,然后在新文件中写入/打印(以前)选择的列表行(我使用第二个参数从列表)。

一切都很顺利,直到我尝试添加一个语句以防我选择的列表行大于实际的 len(list) 然后选择的 list_line = len(list); 无论出于何种原因,它都不起作用。

谁能指出它为什么不起作用,这是我的脚本。感谢一百万的帮助。(这是我用作输入的文件示例的链接)

    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()
4

1 回答 1

4

列表的最后一个元素energies实际上是energies[len_list-1],因为 Python 索引从 0 开始。

所以如果要打印“最后一个元素energies”,需要初始化line_select为比列表长度小一:

if line_select >= len_list:
    line_select = len_list-1
于 2012-11-15T17:57:11.943 回答