注:load後不影響持久化文件;F.write(str),把str寫到文件F中,write()並不會在str後加一個換行符。 python
執行結果: app
pickle_sample.txt以下: dom
write_sample.txt以下: code
#!/usr/bin/env python #-*- coding: utf-8 -*- import cPickle as pickle import random import os import time Length = 100 * 1000 print "Length is %d" %Length def main(): d = {} a = [] for i in range(Length): a.append(random.randint(0, 255)) d["a"] = a #print "d is %s" %d #print "a is %s" %a print "dumping..." #time.time()時間戳,返回從1970/01/01以來的秒數,這是一個浮點數 t1 = time.time() #wb 以二進制寫模式打開 pickle.dump(d, open("tmp1.dat", "wb"), True) print "tmp1 dump1: %.3fs" %(time.time() - t1) t1 = time.time() #w 以寫方式打開 pickle.dump(d, open("tmp2.dat", "w")) print "tmp2 dump2: %.3fs" %(time.time() - t1) t1 = time.time() open("tmp3.dat", "wb").write("%s" %d) print "tmp3 write1: %.3fs" %(time.time() - t1) s1= os.stat("tmp1.dat").st_size s2= os.stat("tmp2.dat").st_size s3= os.stat("tmp3.dat").st_size #%%百分號標記 print "tmp1.size is %d, tmp2.size is %d, tmp3.size is %d, tmp1.size/tmp2.size is %.2f%%" %(s1, s2, s3, 100.0 * s1/s2) print "loading..." t1 = time.time() #rb 以二進制讀模式打開 obj1 = pickle.load(open("tmp1.dat", "rb")) print "tmp1 load1: %.3fs" %(time.time() - t1) t1 = time.time() #r 以讀模式打開 obj2 = pickle.load(open("tmp2.dat", "r")) print "tmp2 load2: %.3fs" %(time.time() - t1) t1 = time.time() f = open("tmp3.dat", "r") print "tmp3 open: %.3fs" %(time.time() - t1) f.close() if __name__ == "__main__": main()
輸出: utf-8