使用linecache提取行的特定变量

时间:2014-06-18 15:04:41

标签: python bash getline linecache

我目前正在使用python linecache模块从给定的文本文档中获取特定行,并使用所述行创建一个新文件。例如,部分代码如下所示:

cs = linecache.getline('variables.txt', 7)
cs_1 = open("lo_cs", "w")
cs_1.write(str(cs))
cs_1.close()

问题是在variables.txt中,第7行由:

给出
variable7 = 3423
例如

。我希望新文件lo_cs只包含实际值' 3423'而不是整行文字。此外,我想插入整个' getline'命令进入if循环,这样如果将variable7留空,则采取另一个动作。有没有办法使用linecache检查' variable7 ='之后的空格?看看是否有任何东西进入那里,如果有的话,只抓住那个特定的值或字符串?

我知道(但并非真正理解)bash脚本似乎使用' $'作为插入或调用给定文件的占位符。我想我需要实现类似的东西......

我想在文本文件中有说明,指示值应该在下面的行中指定 - 以避免仅选择一行的段 - 但这允许一个人意外地输入多余的中断,这将搞砸了所有后续的“getline”'命令,就需要选择的行而言。

非常感谢任何正确方向的帮助!

1 个答案:

答案 0 :(得分:0)

您可以使用以下方法来包装所需的功能:

def parseline(l):
    sp = l.split('=')
    return sp[0], int(sp[1]) if len(sp) > 1 else None

或者如果您不需要变量名称:

def parseline(l):
    sp = l.split('=')
    return int(sp[1]) if len(sp) > 1 and sp[1].strip() != '' else None

然后使用:

csval = parseline(linecache.getline('variables.txt', 7))

您可以稍后在csval上添加条件以查看它是否None,如果是,请采取其他措施。