Python入門學習 之 永久儲存、異常處理
Python之永久儲存(pickle模組)
儲存成一個二進位制數列
存放:pickling
讀取:unpickling
永久儲存一個列表
>>> import pickle
>>> my_list = [123,3.14159,'China',['another list']]
>>> pickle_file = open('E:\hyx02\Python學習\my_list.pkl','wb')
>>> pickle.dump(my_list,pickle_file)
>>> pickle_file.close
my_list.pkl中的字尾名寫什麼都可以。
上面的dump()方法:
pickle.dump(obj, file, [,protocol])
序列化物件,將物件obj儲存到檔案file中去。引數protocol是序列化模式,預設是0(ASCII協議,表示以文字的形式進行序列化),protocol的值還可以是1和2(1和2表示以二進位制的形式進行序列化。其中,1是老式的二進位制協議;2是新二進位制協議)。file表示儲存到的類檔案物件,file必須有write()介面,file可以是一個以'w'開啟的檔案或者是一個StringIO物件,也可以是任何可以實現write()介面的物件。
測試一下剛才的儲存結果:
>>> pickle_file = open('E:\hyx02\Python學習\my_list.pkl','rb')
>>> my_list2 = pickle.load(pickle_file)
>>> print(my_list2)
[123, 3.14159, 'China', ['another list']]
程式碼中的rb:二進位制形式
同理:
永久儲存一個字典
我們可以利用這種方法把資料做成一個資料包
例如:把一個字典(很多城市的資訊)寫成一個包
>>> import pickle
>>> pickle_file=open('E:\hyx02\Python學習\city_data.aaa','wb')
>>> city={'北京':'簡稱“京”,古稱燕京、北平,是中華人民共和國首都、省級行政區、直轄市、國家中心城市、超大城 市 。'}
>>> pickle.dump(city,pickle_file)
>>> pickle_file.close()
然後呼叫時:
>>> import pickle
>>> pickle_file=open('E:\hyx02\Python學習\city_data.aaa','rb')
>>> city2 = pickle.load(pickle_file)
>>> city2
{'北京': '簡稱“京”,古稱燕京、北平,是中華人民共和國首都、省級行政區、直轄市、國家中心城市、超大城市。'}
就可以精簡程式了
Python之異常處理(Exception)
file_name = input('請輸入需要開啟的檔名:')
f = open(file_name)
print('檔案的內容是:')
for each_line in f:
print(each_line)
輸入錯誤檔名:丟擲找不到檔案異常FileNotFoundError
FileNotFoundError: [Errno 2] No such file or directory: 'aaa'
常見異常
AssertionError:斷言語句(assert)失敗
>>> my_list = ['aaaaa']
>>> assert len(my_list) > 0
>>> my_list.pop()
'aaaaa'
>>> assert len(my_list) > 0
Traceback (most recent call last):
File "", line 1, in
assert len(my_list) > 0
AssertionError
丟擲AssertionError異常,assert作為程式中間的檢查點
如下圖:
AttributeError:嘗試訪問未知的物件屬性
>>> my_list.aaa
Traceback (most recent call last):
File "", line 1, in
my_list.aaa
AttributeError: 'list' object has no attribute 'aaa'
丟擲AttributeError異常,如下圖:
IndexError:索引超出序列的範圍
KeyError:不存在的Key
>>> my_dict = {'one':1,'two':2,'three':3}
>>> my_dict['fout']
Traceback (most recent call last):
File "", line 1, in
my_dict['fout']
KeyError: 'fout'
丟擲KeyError異常,如下圖:
#用get()方法不會拋異常
NameError:訪問不存在的變數
OSError:作業系統產生的異常,有很多,比如最開始的FileNotFoundError就屬於OSError
OverflowError:數值運算超出最大限制,Python中不常見
SyntaxError:Python的語法錯誤
>>> print 'aaa'
SyntaxError: Missing parentheses in call to 'print'. Did you mean print('aaa')?
丟擲語法錯誤,沒有括號,要變成函式呼叫的形式
如下圖:
鄭州哪家人流醫院好
TypeError:無法計算,例如不同型別之間運算
ZeroDivisionError:除數為0
異常檢測
try_except語句
try:
檢測範圍
except Exception[as reason]:
出現異常(Exception)後的處理程式碼
例子:
try:
f = open('xxx.txt')
print(f.read())
f.close()
except OSError as reason:
print('檔案出錯啦~\n錯誤的原因是:'+str(reason))
except TypeError as reason:
print('型別出錯啦~\n錯誤的原因是:'+str(reason))
執行結果如下圖:
try:
sum = 1 + '1'
f = open('xxx.txt')
print(f.read())
f.close()
except OSError as reason:
print('檔案出錯啦~\n錯誤的原因是:'+str(reason))
except TypeError as reason:
print('型別出錯啦~\n錯誤的原因是:'+str(reason))
執行結果如下圖:
也可以合併寫作:
except (OSError,TypeError) as reason:
print('出錯啦~\n錯誤的原因是:'+str(reason))
但是不推薦上述try_except語句,比如由於程式中斷而導致的沒有關閉檔案,於是有: try-finally語句
try-finally語句
try:
檢測範圍
except Exception[as reason]
出現異常(Exception)後的處理程式碼
finally:
無論如何都會被執行的程式碼
例子:
try:
f = open('xxx.txt')
print(f.read())
sum = 1 + '1'
except (OSError,TypeError) as reason:
print('出錯啦~\n錯誤的原因是:'+str(reason))
finally:
f.close()
raise語句
>>> raise ZeroDivisionError('除數為0的異常')
顯示上述解釋內容
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945560/viewspace-2693580/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python入門學習之異常處理機制Python
- Python學習之 異常處理詳解Python
- JAVA學習之異常處理Java
- [MySQL光速入門]017 儲存過程中的"異常處理"MySql儲存過程
- 【java學習之再遇異常處理】Java
- swoft 學習筆記之異常處理筆記
- Python爬蟲入門(5):URLError異常處理Python爬蟲Error
- Python的學習(十一)----異常處理(2)Python
- SpringMVC學習系列(10) 之 異常處理SpringMVC
- python異常處理之returnPython
- Java入門教程十一(異常處理)Java
- MySQL儲存過程的異常處理方法MySql儲存過程
- Flask框架從入門到精通之異常處理(十)Flask框架
- Python基礎入門(7)- Python異常處理機制Python
- python 基礎之異常處理Python
- rust學習十、異常處理(錯誤處理)Rust
- 異常處理 - Go 學習記錄Go
- Python異常處理Python
- Python——異常處理Python
- C#快速入門教程(18)—— 異常處理C#
- java入門 -- Java I/O(四) 異常處理Java
- Java異常處理之陋習展播 (轉)Java
- 異常處理機制(二)之異常處理與捕獲
- python try異常處理Python
- python異常捕捉處理Python
- 2.1.3 Python物件導向之異常處理Python物件
- Python穩基修煉之異常處理Python
- MySQL 儲存過程定義條件和異常處理MySql儲存過程
- Java 異常處理專題,從入門到精通Java
- NodeJS之異常處理NodeJS
- Java學習--異常處理及其應用類Java
- 【跟著我們學Golang】之異常處理Golang
- 重學Java - 異常處理Java
- oracle 儲存過程遊標中處理並記錄異常Oracle儲存過程
- Python之錯誤異常和檔案處理Python
- 異常篇——異常處理
- Python Selenium異常處理Python
- python應用:異常處理Python