欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

pyhton -pickle使用方法

程序员文章站 2022-07-16 23:31:47
pyhton -pickle使用方法 新建文件: root@kali:~/python/atmnew# ls account.log account.pkl account....

pyhton -pickle使用方法

新建文件:
root@kali:~/python/atmnew# ls
account.log account.pkl account.py logger.py logger.pyc pickle_test.py record_account.py
root@kali:~/python/atmnew#

1、账户登录与识别

root@kali:~/python/atmnew# cat account.py 
#!usr/bin/python
# --*-- coding:utf-8 --*--

'''用户账户信息'''
import pickle#导入持久化序列模块

#新建字典,第一个元素是帐号信息,账户对应的第一个值为登录密码,第二值为信用卡额度,第三个值为可用额度
account_info = {'0123456789':['xwb123456',15000,12000],
        '9876543210':['xwb654321',20000,18000],
        }

f = open('account.pkl','wb')#对account.pkl文件使用二进制写入方式打开,也可以w+打开


#把字典account_info文件dump到打开的account.pkl文件中去。就是把字典account_info文件所有状态信息写入account.pkl文件中去,
#下次使用,直接从account.pkl文件中取出来,他就是一个字典信息,也是等于格式化存储到account.pkl文件中
pickle.dump(account_info,f)#使用pickle方式把字典account_info文件dump到打开的account.pkl文件中去。

f.close()
root@kali:~/python/atmnew# 

2、交易函数与记录

root@kali:~/python/atmnew# cat record_account.py 
#!/usr/bin/python
# --*-- coding:utf-8 --*--

import pickle
import time,logger#日志模块

#第一步导入时间
pkl_file = open('account.pkl','rb')#只读二进制方式打开account.pkl文件,读取二进制形式到pkl_file文件中
account_list = pickle.load(pkl_file)#使用pickle加载二进制文件pkl_file,到字典account_list中
pkl_file.close()#关闭文件

#对账户和花费金额进行消费。记账功能
def recon(account,cost_amount):
    #
    pkl_file = open('account.pkl','wb')#写入二进制方式打开account.pkl文件,读取二进制形式到pkl_file文件中
    old_position = account_list[account][2]#取出字典account_list中账户0123456789的第三个值可用额度12000赋值给old_position 
    new_position = old_position - cost_amount#使用可用额度old_position减去消费金额cost_amount,为更新后可用额度new_position
    account_list[account][2] = new_position#把更新后的可用额度new_position,赋值给字典account_list中账户0123456789的第三个值可用额度
    print new_position
    pickle.dump(account_list,pkl_file)#使用pickle方法把字典account_list数据dump到pkl_file文件中
    pkl_file.close()#关闭文件

print account_list

#把程序分成不同.py文件模块,非常方便进行日后维护
recon('0123456789',450)#调用账户0123456789,消费金额450元
logger.record_log('0123456789',450,'nike shoes')#记录日志账户0123456789消费450元,购买nike shoes物品
root@kali:~/python/atmnew# 

3、日志文件

root@kali:~/python/atmnew# cat logger.py
#!/usr/bin/python
# --*-- coding:utf-8 --*--

import time#导入时间模块
logfile = 'account.log'#定义要使用的日志文件account.log

#定义函数包括参数账户、花费、描述信息、利息(默认为0、取款、转账有手续费必须带参数值)
def record_log(account,expense,description,interest = 0):
    date = time.strftime('%y-%m-%d %h:%m:%s',time.localtime())#取出当前时间
    record_line = "%s   '%s'    %s  %s\n" %(date,description,expense,interest)#记录当前消费时调用函数各个参数时间行为
    f = open(logfile,'a')#追加写入方式打开日志account.log
    f.write(record_line)#写入每行函数产生日志信息
    f.flush()#实时写入
    f.close()#关闭文件

root@kali:~/python/atmnew# 

4、待补充文件内容
root@kali:~/python/atmnew# cat account.pkl
root@kali:~/python/atmnew# cat account.log
1
root@kali:~/python/atmnew# cat pickle_test.py
1
root@kali:~/python/atmnew#