我有一个文本文件(example.txt),如下所示:
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_phase
,sample_gain_hi
,不做任何其他更改。我如何用Python做到这一点?
非常感谢,
答案 0 :(得分: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()
答案 1 :(得分: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()