HeadFirstPython 資料持久化

2022-04-11 07:41:12 字數 2972 閱讀 6965

#!/usr/bin/env python

#coding=utf-8

"""這一章主要是講如何將資料進行持久化。使用pickle對資料進行醃製。

在對資料進行醃製之前,我們需要對資料進行格式化;

針對資料**,取出我們想要的資料。在中間的知識點是 檔案開啟與關閉,以及其異常處理。

我用的是python2.7 在某些語法上與headfirstpython原書有些不一樣。

"""import pickle

import os

sketch_file = "/users/chenbaocheng/desktop/headfirstpython/chapter3/sketch.txt"

"新建立兩個列表"

man =

other =

"使用try/except對當前**出錯進行異常定義"

try:

data = open(sketch_file)

"對檔案內容進行迭代"

for each_item in data:

try:

"把each_item裡每一行內容進行分割,並賦值到role,line_spoken上,最大分割一次"

(role,line_spoken) = each_item.split(':',1)

"將line_spoken裡多作的空格去除"

line_spoken = line_spoken.strip()

try:

"這個檔案程式會自動幫我們建立,如果檔案已經存在的話那麼它會覆蓋檔案"

man_data_file = open("/users/chenbaocheng/desktop/headfirstpython/chapter3/man_data.txt",'w')

other_data_file = open("/users/chenbaocheng/desktop/headfirstpython/chapter3/other_data.txt",'w')

print >> man_data_file,man

print >> other_data_file,other

except ioerror:

print('the file is minning')

finally:

man_data_file.close()

other_data_file.close()

"下面是一段有意思的**"

try:

"ccc.txt這個檔案是不存在的,一旦執行,就會立即報錯,這個報錯在未新增locals那行**之前,檔案是不會被關閉的。"

data = open("ccc.txt")

print data.read()

except ioerror as e:

print 'file error: ' + str(e)

finally:

"下面這個locals是在python命名空間中去找data,因為在第一步開啟了,所以在這一步如果它在locals裡,那麼現要將其關閉"

if 'data' in locals():

data.close()

"使用open ...with可以不用關於心檔案是否關閉了"

"再經過一次改版的,可以將多個open放到一行裡"

try:

with open("/users/chenbaocheng/desktop/headfirstpython/chapter3/man_data1.txt",'w') as man_data1, open("/users/chenbaocheng/desktop/headfirstpython/chapter3/other_data1.txt",'w') as other_data1:

print >> man_data1,man

print >> other_data1,other

except ioerror as e:

print 'file error: ' + str(e)

"現在我們看下之前生的檔案是否可以被讀取"

with open("/users/chenbaocheng/desktop/headfirstpython/chapter3/other_data.txt") as test:

print test.read()

"下一部分講 使用pickle來將資料進行持久化"

try:

with open("/users/chenbaocheng/desktop/headfirstpython/chapter3/man_data100",'wb') as man_data1, open("/users/chenbaocheng/desktop/headfirstpython/chapter3/other_data100",'wb') as other_data1:

"將資料存入到二進位制的檔案裡"

pickle.dump(man,man_data1)

pickle.dump(other,other_data1)

except ioerror as e:

print 'file error: ' + str(e)

except pickle.pickleerror as perr:

print 'pickleerror: ' + str(perr)

"讀取pickle裡的資料"

try:

with open("/users/chenbaocheng/desktop/headfirstpython/chapter3/man_data100",'rb') as read_man_data1:

print "正在取資料" , "." *8

print pickle.load(read_man_data1)

except ioerror as e:

print 'file error: ' + str(e)

except pickle.pickleerror as perr:

print 'pickleerror: ' + str(perr)

Head First Python(定製資料物件)

新的檔案格式 sarah sweeney,2002 6 17,2 58,2.58,2 39,2 25,2 55,2 54,2.18,2 55,2 55,2 22,2 21,2.22 如果使用split bif把資料抽取到乙個列表,第乙個資料項是名字,然後是出生日期,然後是計時資料。sarah get...

Head First Python 讀書筆記

idle整合開發環境 in 操作符 檢查乙個物件是否在另乙個物件中 不用大括號分開,靠縮排 區分 作為乙個 塊,有 的地方,必須縮排 迭代處理乙個物件序列的三種典型方法 序列是乙個有序的物件集合 for迴圈 知道迴圈次數 迴圈數字列表,迭代變數 x 指的是被迭代物件中的item for x in 1...

Head First Python 讀書筆記(六)

class dog 建立了狗類 def init self,name str,age int none 初始化屬性name和age self.name name self.age age defsit self none 模擬小狗蹲下 print self.name.title is now sit...