標籤

python (4) 3Dprinter (1)

2015年7月14日 星期二

Python │ Error & Save



# 迭代固定次數

range(start,stop,step)
可產生一串數字,範圍從0到(number-1),例如range(0,10,2)會print出0,2,4,6,8。可用於for迴圈固定次數。step為差值。
----------
# 開/關文件

file = open('filename','mode')
mode'r'讀取、'w'寫入、'a'附加、'b'二進位、't'文字模式。當使用'w'模式時,如果檔案不在,會在預設路徑上建立,如果檔案在,則原本內容會被清除。若要開啟有寫和讀的功能,使用'w+'模式。

file.close()
對文件進行寫模式時之後,關閉的動作很重要,可確保你的資料有被寫入並節省記憶體空間。

----------
import os
從標準程式庫匯入os模組。
os.getcwd() 
顯示當前的工作的目錄。
os.chdir('path') 
切換至路徑path。
file.read()
讀取整個文件。
file.readline() 
讀取文件的一列資料。讀取比.readlines()慢,但內存用的少。
file.readlines() 
將文件讀取成一個行的列表,可用for迴圈進行處理。
file.seek(0) 
返回文件開頭處。
----------
# 切開字串

string.split(split characters,maxsplit)
以分割字元做為切割點分割字串,maxsplit引數為最大分割數,分割字元可以為連續分割字串。

# 移除字元
string.strip(chars)
在字串裡移除字元。

# 尋找字

string.find(character,start,end)
在字串裡從start位置到end位置找到要找的字元並回傳找到第一個字元的位置,如果沒有始末點則默認為整個字串。
 ----------
# exception handing 例外處理
try :     
     # may occur error code. 
except :
     # when an exception occurs disposal
例外處理會讓錯誤發生,並讓程式碼繼續執行,可以專注於程式碼需要做的事上。缺點是容易忽略掉例外物件IOERROR或ValueERROR等錯誤,這些錯誤不先加以解決往後容易造成程式碼難以處理,所以在except後面加上這些錯誤型態,並讓你知道錯的內容是什麼。

# finally suite
finally :       
     code must run.  
當你有不論發生什麼錯誤時都必須執行的程式碼時,可將該程式碼放入finally suite並加入倒try的陳述句。把關閉程式的程式碼放入finally suite裡可以降低資料毀損率。
 ----------
# find specific mistakes (I) 找出特定錯誤
try :
    ..........
except ___ERROR as name :
    print ('file error', + str(err))
      #用str是避免發生TypeERROR,因為name為例外物件的識別字。
finally :
    Clean-up Action.

# find specific mistakes (II)
try :
    with open('filename','mode') as identifer
             ............
    #with陳述句為context management protocol。
except ___ERROR as name : 
    print ('file error', + str(err))
用方法(I)可以看到錯誤訊息,但是卻增加了整體程式碼的複雜度,使用方法(II)用with取代finally suite就可以不須擔心開關文件的問題,所以(II)較好,兩道with陳述句可以合併為一道陳述句並以逗號隔開。
  ----------
# save object 儲存物件
import pickle
...
with open (
'filename','wb') as savefile :
     pickle.dump(
data,savefile)
...
with open(
'filename','rb') as restorefile :
     list = pickle.load(
restorefile)
使用pickle將資料保存在磁碟上,以便永續保存。首先先匯入模組,再用dump()保存資料在磁碟,用load()還原他,資料必須要用二位元存取的模式。


沒有留言:

張貼留言