我有一个配置文件,我想在文件的每一行的末尾添加一个空格('')
文件示例:
#xxx configuration
IPaddr = 1.1.1.1<add a space here>
host = a.b.c.d<add a space here>
usrname = aaa<add a space here>
dbSID = xxx<add a space here>
我已经拥有文件中的行数(使用len)所以我知道重复添加空格字符串循环的时间。我也知道如何打开文件进行阅读和写作。
谢谢你们。
你可以使用fileinput和inplace=True
来更新原始文件:
import fileinput
import sys
for line in fileinput.input("in.txt",inplace=True):
sys.stdout.write("{} \n".format(line.rstrip()))
或者使用带有tempfile.NamedTemporaryFile的shutil.move:
from tempfile import NamedTemporaryFile
from shutil import move
with open("in.txt") as f, NamedTemporaryFile("w",dir=".", delete=False) as temp:
for line in f:
temp.write("{} \n".format(line.rstrip()))
move(temp.name,"in.txt")
您无需知道文件的长度。在python文件中是产生线的迭代器。不需要c风格的for循环。
所以像这样的东西应该适合你(python3或from __future__ import print_function
):
with open('file.in') as infile, open('file.out', 'w') as outfile:
for line in infile:
print(line.strip() + ' ', file=outfile)
您可以通过打开文件以“r”标志读取(在同一文件上),
然后,对于文件中的每一行,在新行字符(“\ n”)之前添加一个空格,
最后,使用“w”标志打开文件进行写入,并使用writelines()函数写入更新的内容。
with open('config.txt', 'r') as source:
lines = [line.replace("\n"," \n") for line in source.readlines()]
with open("config.txt", "w") as target:
target.writelines(lines)
请注意,我假设该文件是UNIX文件,因此它在“\ n”之前不包含“\ r”字符,如果不是这样,则行号2应为:
lines = [line.replace("\r\n"," \r\n") for line in source.readlines()]