使用Python修改现有文本文件中的参数

时间:2013-06-12 14:03:04

标签: python

我有一个文本文件(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_phasesample_gain_hi,不做任何其他更改。我如何用Python做到这一点? 非常感谢,

2 个答案:

答案 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()