python的檔案操作與異常處理

來源:互聯網
上載者:User

 將一些知識點記錄一下,有事沒事看一眼。
檔案讀取: 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

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.