2014-06-18 22 views
0

我目前使用python linecache模塊來抓取給定文本文檔中的特定行,並用所述行創建一個新文件。例如,代碼的一部分是這樣的:用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循環中,這樣如果變量7保留爲空,則會執行另一個操作。有沒有辦法使用linecache檢查'variable7 ='後面的空格,看看是否有任何輸入,如果是,只抓住特定的值或字符串?

我知道(但並不真正理解)bash腳本似乎使用'$'作爲插入或調用給定文件的佔位符。我想我需要實現類似的東西...

我想過在文本文件中有說明,指示值應該在下面一行中指定 - 以避免只選擇一行的段 - 但是它允許一個人意外地進入多餘的休息時間,這會弄亂所有後續的「getline」命令,就需要選擇哪一行而言。

任何幫助正確的方向將不勝感激!

回答

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,如果是,請將anoth呃行動。

+0

這正是我所需要的。非常感謝! – user2068783

+0

嗯,看起來我有這個方法的一些問題,並且我認爲它基於在.txt文件中'variable7 = 34'內有空格。 我已經成功地得到「無」返回的唯一方法是寫第二行,如下所示: SP = l.split(「=」) 就這樣,‘無’則返回「variable7 = '和variable7 ='。然而,如果實際上定義了一個整數,那麼'variable7 = 23'(沒有空格)'None'仍然被返回,但是如果它被寫爲'variable7 = 23',那麼記錄'23'。如果可能的話,我想消除對空間的敏感性。再次感謝。 – user2068783

+0

@ user2068783更新了我的答案 – Korem