我有一个文本文件,其内容如下:
#-------------------- 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
我该怎么办?感谢
答案 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