91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python3如何讀寫文件換行符

發布時間:2021-08-12 12:44:12 來源:億速云 閱讀:347 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關python3如何讀寫文件換行符的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

最近在處理文本文件時,遇到編碼格式和換行符的問題。

基本上都是GBK 和 UTF-8 編碼的文本文件,但是python3 中默認的都是按照 utf-8 來打開。用不正確的編碼參數打開,在讀取內容時,會拋出異常。

open(dirpath + "\\" + file, mode = "r+", encoding = "gbk", newline = "")

捕獲拋出的異常,關閉文件。使用另外一種編碼格式打開文件再重新讀取。

讀取文件時,

newline參數用來指定讀取時,對換行符的處理。缺省為 None,表示通用的換行符(“\n”),即文件的換行符是啥,讀出來都是 “\n”.

newline = "" 表示讀取的換行符保持不變,原來是啥,讀出來還是啥。

newline = “\n” 表示遇到 "\n" 才一行結束,“\r” 像其他普通字符一樣對待。

newline = “\r” 表示遇到 "\r" 才一行結束,“\n” 像其他普通字符一樣對待。

在文件寫入時,

newline = None時,寫入的“\n” 自動都變為系統默認的換行符。所以 “\r\n” 在windows下會變成“\r\r\n”寫入。

newline = "" 表示不做任何轉換寫入。

newline = “\n” 表示不做任何轉換寫入。

newline = “\r” 表示將 “\n” 和 "\r" 都當做 "\r" 進行寫入,所以“\r\n” 會變成 “\r\r”進行寫入。

案例:將源碼下的所有makefile 文件中的 -c 參數前,加上 -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 結尾,部分以makefile命名
			print(file)
			with open(dirpath + "\\" + file, mode = "r+", encoding = "gbk", newline = "") as f: #newline為空串表示換行符不轉換
				try: #編碼問題造成的異常
					lines = f.readlines() #一次讀取所有的行到內存
					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如何讀寫文件換行符”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鹤壁市| 绥棱县| 高青县| 宣化县| 华阴市| 股票| 乐亭县| 江陵县| 东兰县| 上蔡县| 平远县| 泗水县| 中阳县| 民乐县| 青神县| 集安市| 双桥区| 丰城市| 阿克陶县| 安阳县| 宁河县| 昂仁县| 东明县| 中超| 岱山县| 屏山县| 新巴尔虎左旗| 扎赉特旗| 平乐县| 大姚县| 汾西县| 磴口县| 保德县| 武平县| 井冈山市| 儋州市| 平江县| 长岛县| 三穗县| 石城县| 长宁区|