python下pickle和file用法

原创 2015年11月21日 16:34:39

一、pickle 用法

1、用户登录认证

-----------------------------create_user.py----------------------------
#!/usr/local/python
# -*- coding: utf-8 -*
import pickle

userInfo = {'git':['git','9000','9000'],
            'tom':['tom','8000','8000']
           }
pickle.dump(userInfo,open("userinfo","wb"))

-----------------------------cat_user.py-------------------------------
#!/usr/local/python
# -*- coding: utf-8 -*
import pickle

userinfo = open("userinfo","r")
while True:
    try:
        line = pickle.load(userinfo)
        print line
    except:
        break
-----------------------------user_auth.py------------------------------
#!/usr/local/python
# -*- coding: utf-8 -*
import pickle

userInfo = pickle.load(open("userinfo","rb"))
while True:
        accountAuth = raw_input("\033[;33mplease input user account:\033[0m").strip()
        if len(accountAuth) == 0:continue
        if userInfo.has_key(accountAuth):

                if 'lock' in userInfo[accountAuth]:   #判断用户是否被锁
                        print "%r user has been locked,please unlock" % accountAuth
                        exit()
                else:
                        for num in range(3,0,-1):
                                passwdAuth = raw_input("\033[;33mplease input user password:\033[0m").strip()
                                if len(passwdAuth) == 0:continue
                                if passwdAuth == userInfo[accountAuth][0]:
                                        print "hello,welcome to your home"
                                        exit()
                                else:
                                        print "wrong password,can try again %r itemes" % num

                        lockaccount = userInfo[accountAuth]
                        lockaccount.append("lock")
                        pickle.dump(userInfo,open("userinfo","wb"))
                        print "\033[;31mAccount freeze within 24 hours\033[0m"
                        exit()
        else:
                print "\033[;31mwrong account %r,please again"

2、生成和查看账单

------------------------------create_bill.py---------------------------
#!/usr/bin/python
# -*- coding: utf-8 -*

import time,pickle

def Bill(Account,Time,Description,RMB):
    Bill = {"zhanghu":Account,"shijian":Time,"miaoshu":Description,"qianqian":RMB}
    #-----------------------------------------------------------------------------
    #此处引号中的zhanghu,shijian,miaoshu,qianqian是Bill字典中的key,而冒号后为value
    #-----------------------------------------------------------------------------
    pickle.dump(Bill,open("bill","a"))    

Bill(111,time.strftime("%Y-%m-%d %H:%M:%S"),"power","-200")
Bill(111,time.strftime("%Y-%m-%d %H:%M:%S"),"mouse","-300")

------------------------------query_bill.py----------------------------
#!/usr/bin/python
# -*- coding: utf-8 -*

import pickle

print "Account\t\tTime\t\tDescription\t\tRMB"
f = open("bill","r")
while True:
    try:
        line = pickle.load(f)
        print "\033[;33m%r\t%r\t%r\t\t\t%r\033[0m" % (line["zhanghu"],line["shijian"],line["miaoshu"],line["qianqian"])
    except:
        break

脚本执行结果

[root@docker ~]# python query_bill.py 
Account                         Time    Description       RMB
    111         '2015-09-20 11:46:33'       'power'     '-200'
    111         '2015-09-20 11:46:33'       'mouse'     '-300'

二、readlines用法

readlines() 一次读取整个文件,自动将文件内容分析成一个行的列表,该列表可以由for … in … 进行处理

1、将文件已列表的形式导入到内存中

-----------------------------shops.txt---------------------------------
car      25000
iphone   4999
coffee   35
mac      9688
bicyle   432

-----------------------------shop_list.py------------------------------
#!/usr/bin/python
#coding=utf-8

products = []
prices = []

shops_file = file('shops.txt')
for line in shops_file.readlines():
        products.append(line.split()[0])    
        prices.append(int(line.split()[1]))

#-------------打印产品、价格菜单--------------
for p in products:
        p_index = products.index(p)
        p_price = prices[p_index]
        print p,'\t',p_price

脚本执行结果

[root@docker ~]# python shop.py 
car     25000
iphone  4999
coffee  35
mac     9688
bicyle  432

2、将文件已字典的形式导入到内存中

-----------------------------contact_list.txt--------------------------
1    zhangsan    IT     18212356434
2    lisi        HR     17482382344
3    wangwu      QA     12384722344
4    sunliu      JN     14234234235
5    tom         IT     23423343523

-----------------------------query_contact.py--------------------------
#!/usr/bin/python
#coding=utf-8
import tab
contact_dic = {}

contact_file='contact_list.txt'
f = file(contact_file)
for line in f.readlines():
    name = line.split()[1]  
    contact_dic[name] = line
#print contact_dic

for n,v in contact_dic.items():
    print n,'\t',v,

while True:
    input = raw_input("please input the staff name:").strip()
    if len(input) == 0:continue
    if contact_dic.has_key(input):
        print "\033[31;1m%s \033[0m" %contact_dic[input]
    else:
        print "sorry,no staff name found\n"

脚本执行结果

[root@docker ~]# python query_contact.py 
lisi     2    lisi        HR     17482382344
tom      5    tom         IT     23423343523
zhangsan 1    zhangsan    IT     18212356434
sunliu   4    sunliu      JN     14234234235
wangwu   3    wangwu      QA     12384722344
please input the staff name:tom
5    tom         IT     23423343523

please input the staff name:hero 
sorry,no staff name found

please input the staff name:

三、readline 用法

readline() 每次只读取文件中一行,一般与 if len(line) == 0:break 配合使用,来判断此文件是否读取完毕

-----------------------------contact_list.txt--------------------------
1    zhangsan    IT     18212356434
2    lisi        HR     17482382344
3    wangwu      QA     12384722344
4    sunliu      JN     14234234235
5    tom         IT     23423343523

-----------------------------query_contact.py--------------------------
#!/usr/bin/python
#coding=utf-8

while True:
        match_yes = 0
        input = raw_input("\033[32;1mmplease input the search name:\033[0m")
        contact_file = file('contact_list.txt')
        while True:
                line = contact_file.readline()
                if len(line) == 0:break
                if input in line:
                        print "match item:\033[36;1m%s\033[0m" %line
                        match_yes = 1
                #else:          
                #       print "no match item found"     
                #此处使用else会导致匹配后,还会继续打印出没匹配到的no match item found信息
        if match_yes == 0:
                print "no match item found"

脚本执行结果

[root@docker ~]# python shop.py 
mplease input the search name:zhangsan
match item:1    zhangsan    IT     18212356434

mplease input the search name:test
no match item found
mplease input the search name:
版权声明:本文为博主原创文章,未经博主允许不得转载。

Python pickle模块学习(超级详细)

Python pickle模块学习
  • sxingming
  • sxingming
  • 2016年08月10日 12:03
  • 16500

Python中pickle模块的使用

import pickle >>> my_list=[666,5.21,['haha']] >>> pickle_file=open('my_list.pickle','wb') >>> pickle...
  • sinat_37390744
  • sinat_37390744
  • 2017年02月15日 16:09
  • 209

python2 python3使用pickle不兼容

阿里的pai平台是 python2.x,在python3下的代码经常会有问题。 比如python3的str可以用来编码,python的str只是转为字符串,需要用str(1).encode('utf...
  • yuexiaomao
  • yuexiaomao
  • 2017年08月31日 16:08
  • 1048

Python数据存储:pickle模块的使用讲解

在机器学习中,我们常常需要把训练好的模型存储起来,这样在进行决策时直接将模型读出,而不需要重新训练模型,这样就大大节约了时间。Python提供的pickle模块就很好地解决了这个问题,它可以序列化对象...
  • coffee_cream
  • coffee_cream
  • 2016年06月24日 17:11
  • 3649

Python中的json与pickle模块

一、基础json和pickle模块是将数据进行序列化处理,并进行网络传输或存入硬盘。import json import pickle pickle模块 python的pickle模块实现了pyt...
  • shuyededenghou
  • shuyededenghou
  • 2017年07月23日 16:29
  • 217

Python下pickle加载文件问题

写入磁盘文件的代码为: with open(file_path, "w") as f:     pickle.dump(data,f) 加载文件的代码为 with open(resul...
  • ccemmawatson
  • ccemmawatson
  • 2015年12月10日 11:31
  • 1845

解决python3读取Python2存储的pickle文件

我在使用python3.5处理一个序列化文件xxx.pk,不过这个.pk文件是我在python2.7里面存储的,当我用python3读取的时候就会报如下的错误。 import pickle pick...
  • accumulate_zhang
  • accumulate_zhang
  • 2017年11月21日 22:32
  • 379

Python3.6笔记之腌制泡菜(pickle模块的用法)

pickle模块用于将列表、元组、字典等对象存储到文件中,以及从文件中读取这些对象。 例如,将列表存入文件:import pickle #导入pickle模块 my_list = [123, 3.1...
  • young2415
  • young2415
  • 2017年07月31日 21:09
  • 496

pickle 在python 2和python 3中兼容性问题

references
  • lanchunhui
  • lanchunhui
  • 2015年11月25日 11:51
  • 4900

python模块 - pickle模块

http://blog.csdn.net/pipisorry python的pickle模块实现了基本的数据序列和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中...
  • pipisorry
  • pipisorry
  • 2015年04月27日 20:50
  • 5014
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python下pickle和file用法
举报原因:
原因补充:

(最多只允许输入30个字)