python基礎四-檔案讀取
阿新 • • 發佈:2018-12-25
檔案讀取
open()接受一個引數:要開啟的檔名, 並返回一個表示檔案的物件, 儲存到後面的變數中
python會在當前執行檔案所在目錄查詢
可以使用絕對路徑, 在linux中使用'/', 在windows使用'\'
絕對路徑通常較長, 建議存到一個變數中!
關鍵字with在不再需要訪問檔案(合適的時候)後自動將檔案關閉
pi_digits.txt
3.1415926535
8979323856
2643383279
with open('pi_digits.txt') as file_object: contents = file_object.read() print(contents) #這樣打印出來會多一個空行,原因在於read()在每一行末都會返回一個空字串,將這個空字串顯示出來就是一個空行,即read()在最後一行行末遇到一個空字串,最後多列印了一個空行 print(contents.rstrip())
#逐行讀取
filename = 'pi_digits.txt'
with open(filename) as file_object:
for i in file_object:
print(i.rstrip())
建立一個包含檔案各行內容的列表
readlines()返回一個列表,包含所有行
filename = 'text_files\pi_digits.txt' with open(filename) as file_object: lines = file_object.readlines() print(type(lines)) print(lines) for line in lines: print(line.rstrip()) # result: # <class 'list'> # ['3.1415926535\n', ' 8979323856\n', ' 2643383279\n', ' '] # 3.1415926535 # 8979323856 # 2643383279 #為什麼列表最後有一個空格?因為readlines()讀到檔案末尾了
檔案寫入, python只能將str型別寫入文字檔案
filename = 'programming.txt'
with open(filename, 'w') as file_object:#如果沒有指定第二個引數,預設為只讀
file_object.write("I love programming.")
write()不會在文字末尾新增換行
寫入多行要用'\n'
#異常處理 print("Give me two numbers, and I'll divide them.") print("Enter 'q' to quit.") while True: first_number = input("\nFirst number: ") if first_number == 'q': break second_number = input("\nSecond number: ") try: answer = int(first_number) / int(second_number) except ZeroDivisionError: print("You can't divide by 0!") else: print(answer) #try-except-else程式碼塊原理: try-except程式碼塊後面還有其他程式碼, 程式將接著執行 #意思就是try嘗試執行, except負責處理出錯, 其餘情況由else負責
#儲存資料
#json.dump()儲存; json.load()讀取
import json
numbers = [2,3,5,7,11,13]
filename = 'number.json'
with open(filename, 'w') as f_obj:
json.dump(numbers, f_obj) #接受兩個引數, 要儲存的資料以及可用於儲存資料的檔案物件
#讀取
import json
filename = 'number.json'
with open(filename) as f_obj:
numbers = json.load(f_obj)
print(numbers)
print(type(numbers))