2013-06-12 38 views
1

我有一個文本文件(example.txt中),它看起來是這樣的:修改參數在現有文本文件與Python

sn = 50 
fs=60 
bw=10 
temperature=20 
ch=10 

rx_b_phase = 204c7a76 
rx_b_gain = 113 
tx_b_phase = 01ff03e1 
tx_b_gain = 105 

#sample_gain 
sample_gain_hi = 7dc 
sample_gain_mid = 7d0 
sample_gain_low = 7c9 

psl = 44 
pin = -1728 

#tmpr_reg temperature,pa_reg,wfp_reg 
tmpr_reg = 1,d4,1b 
tmpr_reg = 6,d3,1b 
tmpr_reg = 12,d2,1b 
tmpr_reg = 17,d1,1b 

我需要修改/更新下列參數:rx_b_phasesample_gain_hi沒有改變任何東西。我如何用Python來做到這一點? 非常感謝,

回答

2

可以使用fileinput模塊:

import fileinput 
for line in fileinput.input('example.txt', inplace = True): 
    if line.startswith('rx_b_phase'): 
     #if line starts with rx_b_phase then do something here 
     print "rx_b_phase = foo" 
    elif line.startswith('sample_gain_hi'): 
     #if line starts with sample_gain_hi then do something here 
     print "sample_gain_hi = bar" 
    else: 
     print line.strip() 
0

您也可以使用mmap做到這一點(一個需要注意的是更新後的線路需要相同的長度,舊的 - 讓你可能需要填充空格)

>>> import mmap 
>>> f = open("config.conf", "r+b") 
>>> mm = mmap.mmap(f.fileno(), 0) 
>>> mm.find("sample_gain_hi") 
134 
>>> new_line = "sample_gain_hi = 999" 
>>> mm[134:134+len(new_line)] = new_line 
>>> mm.close() 
>>> f.close()