Python之讀寫文本數據
阿新 • • 發佈:2019-03-08
好的 輸出數據 字節數 python amp erro write data with open
知識點不多
普通操作
# rt 模式的 open() 函數讀取文本文件 # wt 模式的 open() 函數清除覆蓋掉原文件,write新文件 # at 模式的 open() 函數添加write新文件 with open("../../testData","rt",encoding="utf-8") as f : for line in f : print(line) # 寫操作默認使用系統編碼,可以通過調用 sys.getdefaultencoding() 來得到,也以通過傳遞一個可選的 encoding 參數給open()函數,幾個常見的編碼是ascii, latin-1, utf-8和utf-16# 關於換行符的識別問題:在Unix和Windows中是不一樣的(分別是 \n 和 \r\n )。 默認情況下,Python會以統一模式處理換行,識別普通換行符並將其轉換為單個 \n 字符 # 如果你不希望這種默認的處理方式,可以給 open() 函數傳入參數 newline=‘‘ f =open(‘somefile.txt‘, ‘rt‘, newline=‘‘) # 最後一個問題就是文本文件中可能出現的編碼錯誤 # 如果修改了編碼方式之後,編碼錯誤還是存在的話,你可以給 open() 函數傳遞一個可選的 errors 參數來處理這些錯誤。 m = open(‘sample.txt‘, ‘rt‘, encoding=‘ascii‘, errors=‘replace‘) # 如果你經常使用 errors 參數來處理編碼錯誤,也是不好的。 # 原則是確保你總是使用的是正確編碼。當模棱兩可的時候,就使用默認的設置(通常都是UTF-8)。
打印輸出至文件中
with open(‘../../testData‘, ‘at‘) as f: print(‘Hello python!‘, file=f) # 使用其他分隔符或行終止符打印 # 使用 print() 函數輸出數據,但是想改變默認的分隔符或者行尾符,使用sep end print("hello","cool","zzy",sep="***",end="!") # hello***cool***zzy! #使用 str.join() print("***".join(("hello","cool","zzy"))) # hello***cool***zzy # 對比 row = ("hello","cool","zzy") print(*row,sep="***") # hello***cool***zzy
讀寫字節數據
# 讀寫二進制文件,比如圖片,聲音文件,使用模式為 rb 或 wb 的 open() 函數 # 在讀取二進制數據的時候,字節字符串和文本字符串的語義差異可能會導致一個潛在的陷阱:索引和叠代動作返回的是字節的值而不是字節字符串 a=‘Hello World‘ print(a[0]) # H b = b‘Hello World‘ # Byte string print(b[0]) # 72 索引和叠代動作返回的是字節的值而不是字節字符串 # 如果你想從二進制模式的文件中讀取或寫入文本數據,必須確保要進行解碼和編碼操作 # 解碼 with open("../../testDta","rb") as f : data=f.read(16) text=data.decode("utf-8") # 編碼 with open("../../testDta","wb") as d : text="hello" f.write(text.encode("utf-8"))
Python之讀寫文本數據