將一些知識點記錄一下,有事沒事看一眼。
檔案讀取: open
import os os.getcwd() #取得當前的執行路徑 os.chdir('C:/Users/ourgame/Desktop/headFirstPython') #進入某個路徑 data = open('sketch.txt') #開啟檔案 print(data.readline(),end='') #讀取一行,檔案指標會向下移動 print(data.readline(),end='') #此句與上句輸出不一樣 data.seek(0) #data指標返回到檔案起始位置 for each in data: print(each,end='') #輸出整個檔案 data.close() #關閉檔案
檔案內容的處理:split
for each_line in data: (role,line_spoken) = each_line.split(':') print(role,end='') print(' said: ',end='') print(line_spoken,end='')
異常處理:try except python 面對錯誤的邏輯與其他語言不同。它放任錯誤的發生並在異常中處理它,並不會在主邏輯中添加更多的邏輯處理。
try: data = open('sketch.txt') for each_line in data: # if each_line.find(":") > -1: try: (role,line_spoken) = each_line.split(':',1) print(role,end='') print(' said: ',end='') print(line_spoken,end='') except ValueError: pass except IOError as err: #使用as將異常對象,並將其賦值給一個標識符 print('File Error:'+str(err)) #‘+’用於字串直接的串連 finally: if 'data' in locals(): data.close()
或使用with(無需使用finally)
try: with open('its.txt','w') as data: print("it's...",file=data) #輸出預設為sys.stdoutexcept IOError as err: print("File Error:"+str(err)) #str()將對象轉換為字串
with也可以複合使用:
with open("a.txt",'w') as a_out,open("b.txt",'w') as b_out:
pass語句就是Python的空語句或NULL語句,它什麼也不做。
這是一個思路的轉變:隨之你必須考慮的錯誤越來越多,”增加額外代碼和邏輯“的方案複雜性也隨之增加,直到最後可能會掩蓋程式的本來作用。而異常處理方案就不存在這個問題,可以一目瞭然地看出程式的主要作用。 通過使用Python的異常處理機制,你可以關注代碼真正需要做什麼,而不必擔心哪裡可能出問題,並編寫額外的代碼來避免執行階段錯誤。謹慎的使用try可以讓代碼更易閱讀,更易寫,而且可能這是最重要的——出問題時候更容易修正。 要重點關注你的代碼需要做什麼。 寫檔案:以寫的模式開啟檔案
out = opne("data.txt","w") print("test data",file=out) out.close()
使用
w : 檔案已存在則清空檔案內容。 a : 追加到一個檔案。 w+: 開啟檔案讀寫,不清除。 b : 以二進位操作檢查檔案中是否存在某個變數:locals()
if 'data' in locals(): xxxxxx
調用多個預設參數時,可指定相應的 參數名=值 來確定某個參數:
print("abc",file=myout)
去除字串的空格:strip()方法可以從字串中去除不想要的空格 格式化儲存(醃制):pickle、用dump儲存、用load恢複
import pickle ...... with open('mydata.pickle','wb') as mysavedata: #要以二進位操作 pickle.dump(['a','b'],mysavedata) ...... with open('mydata.pickle','rb') as my_restore_data: #以二進位取 a_list = pickle.load(my_restore_data) print(a_list) #一旦資料回到程式中,就可以像任何其他資料對象一樣操作了
其異常的格式為:
except pickle.PickleError as per: print("Pickel Error:"+str(per))
做持久化儲存,使用pickle的通用檔案I/O才是上策。
本篇部落格出自阿修羅道,轉載請註明出處:http://blog.csdn.net/fansongy/article/details/8986616