Python文件的读写

kycp1 发布于 2017/11/19 23:15
阅读 258
收藏 1

如题,比如有一个文件,内容如下:
[outip]
192.168.0.1
[inputip]
127.0.0.1
结束符*
那么问题来了,我想要在[outip]下边插入一个ip,效果如下:
[outip]
192.168.1.1
192.168.0.1
[inputip]
127.0.0.1
这要什么实现呢?新手学Python,已经两天了~希望路过的大神指条明路,万般感谢!

加载中
0
kycp1
kycp1

fo = file('/etc/ansible/hosts')
        lines = []
        for line in fo:
            lines.append(line)
        fo.close()
        lines.insert(1,outvps+'\n')
        s = ''.join(lines)
        fo = open('/etc/ansible/hosts','w+')
        fo.write(s)
        fo.close()
        del lines[:]

已解决!谢谢各位大神的解答!

0
大洋的顶端
大洋的顶端

你这不是标准的配置文件,造成很多不方便,给自己找麻烦。

应该这样设置:

IP1=192.168.0.1

IP2=192.168.0.1

kycp1
kycp1
我也想这么配,但是规则就是这样子~
0
大洋的顶端
大洋的顶端
import configparser
# 加载现有配置文件
conf = configparser.ConfigParser(allow_no_value=True)
conf.read("a.txt")

conf.set("outip","127.0.55211",None)
conf.write(open('a.txt', "w"))

 

研究了下 就这样

0
wei2011
wei2011

自己解析这个文件就行了。按行读,每读一行就匹配一下,看看是不是[xxx]这样的串,如果是,则作为key往字典里存一个list,再往下读,如果读到的不是[xxx]这样的串,说明是内容,加到list里。这样,解析完后会得到一个这样的字典:

{
  "outip":["192.168.1.1","192.168.0.1"],
  "inputip":["127.0.0.1"]
}

要加一个ip到某个配置下很简单,按key找到这个列表,再append进去就行了。保存的时候,不用说了吧。。。

把这些操作包装成一个配置类,其它地方都可以用

返回顶部
顶部