檔案讀寫和異常(Python)__Python

來源:互聯網
上載者:User
讀取檔案
例:
with open('D://Develop//new.txt') as file_object:    contents=file_object.read()    print(contents)
函數open()開啟檔案返回一個表示檔案的Object Storage Service在後面使用的變數中,它接受一個參數:要開啟檔案的名稱,如果檔案在當前執行的檔案所在的目錄中,則直接傳入檔案的名稱,否則還需要指定檔案的路徑,這叫絕對檔案路徑。
關鍵字with在不再需要訪問檔案後將其關閉
方法read()讀取這個檔案的全部內容

寫入檔案
filename='programming.txt'with open(filename,'w') as file_object:    file_object.write("I love programming.")
在這個樣本中,調用open()時提供了兩個實參。第一個實參是要開啟的檔案的名稱,第二個實參‘w’告訴Python,我們要以寫入模式開啟這個檔案。開啟檔案時,可指定讀模數式(‘r’)、寫入模式(‘w’)、附加模式(‘a’;給檔案新增內容,而不是覆蓋原有的內容)或讓你能夠讀取和寫入的模式(‘r+’)。如果省略模式實參,Python將預設的唯讀模式開啟檔案。
如果要寫入的檔案不存在,將自動建立。在以寫入(‘w’)模式開啟檔案時要小心,因為如果指定的檔案已經存在,Python將在返迴文件對象前清空該檔案。
寫入多行時文字檔中不會因為print換行,因此在代碼中要指定分行符號\n

異常
每當發生讓Python不知所措的錯誤時,它都會建立一個異常對象。異常是使用try-except代碼塊處理的。
處理ZeroDivisionError異常
一個簡單錯誤:除以數字0,將會出現報錯,這時我們可以使用try-except代碼塊來處理可能引發的異常
例:
try:    print(5/0)except ZeroDivisionError:    print("You can't divide by zero!")
如果try代碼塊中的代碼運行起來沒有問題,Python將跳過except代碼塊;否則Python將尋找這樣的except代碼塊並運行其中的代碼
try-except-else代碼塊:try代碼塊成功執行時才需要啟動並執行代碼放在else代碼塊中

處理FileNotFoundError異常
filename = 'alice.txt'with open(filename) as f_obj:    contents = f_obj.read()

若檔案不存在,將引發一個FileNotFoundError異常
要處理這個錯誤:

filename = 'alice.txt'try:    with open(filename) as f_obj:        contents = f_obj.read()except FileNotFoundError:    msg = "Sorry, the file " + filename + " does not exist."    print(msg)
將會顯示Sorry, the file alice.txt does not exist.

失敗時一聲不吭:在except代碼塊中明確地告訴Python什麼都不要做。即pass語句

儲存資料
模組json讓你能夠將簡單的Python資料結構轉儲到檔案中,json 採用完全獨立於程式設計語言的文字格式設定來儲存和表示資料。
使用json.dump()和json.load()
例:
import jsonnumbers=[2,3,5,7,11,13]filename='numbers.json'with open(filename,'w') as f_obj:    json.dump(numbers,f_obj)
使用副檔名.json來指出檔案儲存體的資料為JSON格式。
使用函數json.dump()將數字列表格儲存體到檔案numbers.json中
json.dump()接受兩個實參:要儲存的資料以及可用於儲存資料的檔案對象。

接下來再編寫一個程式,使用json.load()將這個列表讀取到記憶體中
接上面程式:
with open(filename) as f_obj:    a=json.load(f_obj)print(a)

使用函數json.load()載入儲存在numbers.json中的資訊,並將其儲存到變數a中








聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.