使用python修改文件

我有包含以下行的文件:

info face="asd" size=49 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=0,0
common lineHeight=52 base=43 scaleW=128 scaleH=128 pages=1 packed=0
page id=0 file="asd.png"
chars count=9
char id=32 x=58 y=82 width=0 height=0 xoffset=0 yoffset=40 xadvance=9 page=0 chnl=0
char id=179 x=34 y=42 width=28 height=38 xoffset=2 yoffset=6 xadvance=26 page=0 chnl=0
char id=181 x=94 y=2 width=28 height=38 xoffset=2 yoffset=6 xadvance=26 page=0 chnl=0
char id=183 x=2 y=42 width=30 height=38 xoffset=2 yoffset=6 xadvance=27 page=0 chnl=0
char id=185 x=2 y=2 width=30 height=38 xoffset=2 yoffset=6 xadvance=27 page=0 chnl=0
char id=187 x=64 y=2 width=28 height=38 xoffset=2 yoffset=6 xadvance=26 page=0 chnl=0
char id=189 x=34 y=2 width=28 height=38 xoffset=2 yoffset=6 xadvance=26 page=0 chnl=0
char id=191 x=34 y=82 width=22 height=36 xoffset=2 yoffset=8 xadvance=18 page=0 chnl=0
char id=193 x=2 y=82 width=28 height=38 xoffset=2 yoffset=6 xadvance=26 page=0 chnl=0
kernings count=0

我需要找到id值,然后根据简单的条件修改(从值中加/减一些数字)该数字并写回文件。 我的尝试是:

input = open('file.txt', 'r')
for line in input: 

在这里我正在考虑捕获3行char id= ,value和行的其余部分。 然后修改值并创建新的字符串。 但我怀疑这是Python中的有效方式。 此外,我不确定是否有办法处理同一个文件而不是创建新文件,删除旧的和重命名回旧的名称以修改文件内容。


你将不得不替换文件(所以写入临时文件)。 但是,文件fileinput模块使您可以轻松完成此任务:

import fileinput
import sys

for line in fileinput.input(filename, inplace=True):
    if line.startswith('char id='):
        _, id_, rest = line.split(None, 2)
        id_ = int(id_.split('=')[1])
        id_ += 1  # adjust as needed
        line = 'char id={} {}'.format(id_, rest)

    sys.stdout.write(line)

这个例子只是将id值加1,你可以通过调整代码来做任何你想要的id_ integer。

通过指定fileinput inplace=Truefileinput模块将原始文件移动到备份,捕获您写入stdout任何内容,并将其写入原始文件位置。

链接地址: http://www.djcxy.com/p/55067.html

上一篇: Modify file using python

下一篇: Relative imports for the billionth time