#!/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...