【Python】pickle 與 write

 

注: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

相關文章
相關標籤/搜索