python3 讀寫文件換行符的方法
最近在處理文本文件時,遇到編碼格式和換行符的問題。
基本上都是GBK 和 UTF-8 編碼的文本文件,但是python3 中默認的都是按照 utf-8 來打開。用不正確的編碼參數(shù)打開,在讀取內(nèi)容時,會拋出異常。
open(dirpath + "\\" + file, mode = "r+", encoding = "gbk", newline = "")
捕獲拋出的異常,關(guān)閉文件。使用另外一種編碼格式打開文件再重新讀取。
讀取文件時,
newline參數(shù)用來指定讀取時,對換行符的處理。缺省為 None,表示通用的換行符(“\n”),即文件的換行符是啥,讀出來都是 “\n”.
newline = "" 表示讀取的換行符保持不變,原來是啥,讀出來還是啥。
newline = “\n” 表示遇到 "\n" 才一行結(jié)束,“\r” 像其他普通字符一樣對待。
newline = “\r” 表示遇到 "\r" 才一行結(jié)束,“\n” 像其他普通字符一樣對待。
在文件寫入時,
newline = None時,寫入的“\n” 自動都變?yōu)橄到y(tǒng)默認的換行符。所以 “\r\n” 在windows下會變成“\r\r\n”寫入。
newline = "" 表示不做任何轉(zhuǎn)換寫入。
newline = “\n” 表示不做任何轉(zhuǎn)換寫入。
newline = “\r” 表示將 “\n” 和 "\r" 都當(dāng)做 "\r" 進行寫入,所以“\r\n” 會變成 “\r\r”進行寫入。
案例:將源碼下的所有makefile 文件中的 -c 參數(shù)前,加上 -g 選項。
import os import re os.chdir(r"E:\code") s = os.walk(".") pattern = re.compile(r"\s-c\s") for dirpath, dirnames, filenames in s: for file in filenames: if file.endswith(".mak") or "makefile" in file: #部分以 .mak 結(jié)尾,部分以makefile命名 print(file) with open(dirpath + "\\" + file, mode = "r+", encoding = "gbk", newline = "") as f: #newline為空串表示換行符不轉(zhuǎn)換 try: #編碼問題造成的異常 lines = f.readlines() #一次讀取所有的行到內(nèi)存 f.seek(0) #回到文件起始處 for line in lines: #newline = line.replace(" -c "," -g -c ") newline= re.sub(pattern, " -g -c ", line) f.write(newline) except ValueError: f.close() with open(dirpath + "\\" + file, mode = "r+", encoding = "utf-8", newline = "") as fnew: try: lines = fnew.readlines() fnew.seek(0) for line in lines: #newline = line.replace(" -c "," -g -c ") newline= re.sub(pattern, " -g -c ", line) fnew.write(newline) except ValueError: print("*************** " + dirpath + "\\" + file) #打印utf-8 和 gbk 之外編碼的文件名
以上這篇python3 讀寫文件換行符的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python 判斷是否為正小數(shù)和正整數(shù)的實例
這篇文章主要介紹了python 判斷是否為正小數(shù)和正整數(shù)的實例的相關(guān)資料,這里提供實例,實例注釋說明很清楚,需要的朋友可以參考下2017-07-07matplotlib實現(xiàn)數(shù)據(jù)實時刷新的示例代碼
這篇文章主要介紹了matplotlib實現(xiàn)數(shù)據(jù)實時刷新的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01Python實現(xiàn)將HTML轉(zhuǎn)換成doc格式文件的方法示例
這篇文章主要介紹了Python實現(xiàn)將HTML轉(zhuǎn)換成doc格式文件的方法,涉及Python htmlparser及docx模塊的相關(guān)使用技巧,需要的朋友可以參考下2017-11-11Python中卷積神經(jīng)網(wǎng)絡(luò)(CNN)入門教程分分享
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNN)是一類特別適用于處理圖像數(shù)據(jù)的深度學(xué)習(xí)模型,本文介紹了如何使用Keras創(chuàng)建一個簡單的CNN模型,并用它對手寫數(shù)字進行分類,需要的可以參考一下2023-05-05