设为首页 加入收藏

TOP

Python-Day4 Python基础进阶之生成器/迭代器/装饰器/Json & pickle 数据序列化(三)
2017-09-30 17:40:05 】 浏览:7049
Tags:Python-Day4 Python 基础 进阶 成器 装饰 /Json pickle 数据 序列化
0\x00\x00scoreq\x02KXX\x04\x00\x00\x00nameq\x03X\x03\x00\x00\x00Bobq\x04u.
' #pickle.dumps()方法把任意对象序列化成一个bytes,然后,就可以把这个bytes写入文件。 >>> f = open('dump.txt', 'wb') >>> pickle.dump(d, f) >>> f.close() #当我们要把对象从磁盘读到内存时,可以先把内容读到一个bytes,然后用pickle.loads()方法反序列化出对象。 >>> f = open('dump.txt', 'rb') >>> d = pickle.load(f) >>> f.close() >>> d {'age': 20, 'score': 88, 'name': 'Bob'}

  Pickle的问题和所有其他编程语言特有的序列化问题一样,就是它只能用于Python,并且可能不同版本的Python彼此都不兼容,因此,只能用Pickle保存那些不重要的数据,不能成功地反序列化也没关系。

  如果我们要在不同的编程语言之间传递对象,就必须把对象序列化为标准格式,比如XML,但更好的方法是序列化为JSON,因为JSON表示出来就是一个字符串,可以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输。JSON不仅是标准格式,并且比XML更快,而且可以直接在Web页面中读取,非常方便。

>>> import json >>> d = dict(name='Bob', age=20, score=88) >>> json.dumps(d) '{"age": 20, "score": 88, "name": "Bob"}'

  dumps()方法返回一个str,内容就是标准的JSON。

  要把JSON反序列化为Python对象,用loads()或者对应的load()方法,前者把JSON的字符串反序列化。

>>> json_str = '{"age": 20, "score": 88, "name": "Bob"}'
>>> json.loads(json_str) {'age': 20, 'score': 88, 'name': 'Bob'}

 

 文件读取操作:
global
        log 127.0.0.1 local2
        daemon
        maxconn 256
        log 127.0.0.1 local2 info
defaults
        log global
        mode http
        timeout connect 5000ms
        timeout client 50000ms
        timeout server 50000ms
        option  dontlognull

listen stats :8888
        stats enable
        stats uri       /admin
        stats auth      admin:1234

frontend oldboy.org
        bind 0.0.0.0:80
        option httplog
        option httpclose
        option  forwardfor
        log global
        acl www hdr_reg(host) -i www.oldboy.org
        use_backend www.oldboy.org if www

backend www.oldboy.org
        server 100.1.7.9 100.1.7.9 weight 20 maxconn 3000
backend www.newboy.org
        server 100.1.7.9 100.1.7.9 weight 20 maxconn 3000
操作文件
 
 
f = open('haproxy.txt', encoding='utf-8')
lines = []
c = 0
d =99999
print("显示所有节点:")
with open('haproxy.txt', encoding='utf-8') as e:
    for line in e:
        pass
        if "backend " in line and "use_backend" not in line:
            print(line)
choose_input = input(
        "1 查询\n"
        "2 修改\n"
        "3 增加\n"
        "4 删除\n"
        "请输入要选择的操作序号[1|2|3|4]:")
if str.isdigit(choose_input):
    choose_input = int(choose_input)
    if choose_input == 1:
        user_input = input("例如www.oldboy.org,手打,不要复制粘贴,因为是网页会出错不是程序的错误\n"
                           "请输入要查询的主机名:")
        a = ("backend %s\n" % user_input)
        for i in f:
            lines.append(i.strip().split())
            c += 1
            if a in i:
                d = c
        f.close()
        print(' '.join(lines[d-1]), "\n", ' '.join(lines[d]))
    if choose_input == 3:
        user_input=input("例如{'bakend': 'www.oldboy.org','record':{'server': '100.1.7.9','weight': 20,'maxconn': 3000}}\n"
                         "请输入要增加的节点:")
        arg=eva l(user_input)
        with open("haproxy.txt","a",encoding="utf-8") as e:
                e.write("bakend ")
                e.write(arg['bakend'])
                e.write("\n        record ")
                e.write(arg['record']['server'])
                e.write(" ")
                e.write(arg['record']['server'])
                e.write(" weight ")
                e.write(str(arg['record']['weight']))
                e.write(" maxconn ")
                e.write(str(arg['record']['maxconn']
首页 上一页 1 2 3 4 下一页 尾页 3/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇HTTPResponse object — JSON obj.. 下一篇Python之路:堡垒机实例

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目