如何在txt文件中查找和替换属性?

时间:2017-05-20 08:48:28

标签: python python-2.7

我有一个文本文件,其内容如下:

#-------------------- INPUT --------------------
# file name- This is input file name
-input_file
2
/home/useser/file_in1.txt
/home/useser/file_in2.txt
# Output file- this is output file
-output_file
2
/home/useser/file_out1.txt
/home/useser/file_out2.txt

现在,我想在字段/home/useser/file_in1.txt中将/home/useser/file_in3.txt替换为/home/useser/file_in2.txt/home/useser/file_in4.txt -input_file。必须在字段-output_file中执行相同的过程。我正在使用python 2.7,这就是我尝试过的。但我无法达到预期的结果

#-------------------- INPUT --------------------
# file name- This is input file name
-input_file
2
/home/useser/file_in3.txt
/home/useser/file_in4.txt
# Output file- this is output file
-output_file
2
/home/useser/file_out3.txt
/home/useser/file_out4.txt

我的python代码是

if __name__ == "__main__":
    input_file_3='/home/useser/file_in3.txt'
    input_file_4 = '/home/useser/file_in4.txt'
    out_file_3='/home/useser/file_out3.txt'
    out_file_4 = '/home/useser/file_out4.txt'
    f = open('input.txt', 'r')
    for line in f:
        if '-input_file' in line:
            print line

我该怎么办?感谢

1 个答案:

答案 0 :(得分:1)

使用str.startwith()str.replace()函数的解决方案:

with open('input.txt', 'r+') as f:  # open file in read/write mode
    lines = iter(f.read().splitlines())  # cobverting list to iterator
    f.seek(0)  # reseting file pointer
    for l in lines:
        if l.startswith('-input_file'):
            num = next(lines)
            in1 = next(lines).replace('file_in1.txt', 'file_in3.txt')
            in2 = next(lines).replace('file_in2.txt', 'file_in4.txt')
            f.write('\n'.join([l, num, in1, in2]) + '\n')
        elif l.startswith('-output_file'):
            num = next(lines)
            out1 = next(lines).replace('file_out1.txt', 'file_out3.txt')
            out2 = next(lines).replace('file_out2.txt', 'file_out4.txt')
            f.write('\n'.join([l, num, out1, out2]) + '\n')
        else:
            f.write(l + '\n')

        f.truncate()

新的input.txt内容:

#-------------------- INPUT --------------------
# file name- This is input file name
-input_file
2
/home/useser/file_in3.txt
/home/useser/file_in4.txt
# Output file- this is output file
-output_file
2
/home/useser/file_out3.txt
/home/useser/file_out4.txt
相关问题