python3 读写文件换行符的方法
作者:zhouguoqionghai 时间:2021-09-29 11:21:22
最近在处理文本文件时,遇到编码格式和换行符的问题。
基本上都是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 之外编码的文件名
来源:https://blog.csdn.net/zhouguoqionghai/article/details/60879794
标签:python,读写,文件,换行符
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Python登录注册验证功能实现
2022-10-17 04:53:00
给验证码增加干扰的杂点
2008-05-16 11:34:00
ASP如何获取通过代理的真实IP地址
2007-09-20 13:11:00
亚马逊购物用户体验分析 (二)
2009-10-25 12:48:00
![](https://img.aspxhome.com/file/UploadPic/200910/25/look-inside-75s.jpg)
深入浅析Python中join 和 split详解(推荐)
2022-09-19 17:43:38
Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】 <font color=red>原创</font>
2021-08-21 17:17:21
Flask request 对象介绍
2022-11-01 23:45:35
![](https://img.aspxhome.com/file/2023/3/78543_0s.png)
Laravel中数据库迁移操作的示例详解
2023-05-25 06:27:38
详解用python计算阶乘的几种方法
2021-11-17 00:00:14
python定向爬取淘宝商品价格
2023-10-03 23:33:12
JavaScript版俄罗斯方块Easy Tetris实现原理
2009-07-16 10:25:00
![](https://img.aspxhome.com/file/UploadPic/20097/16/i2009621214419-26s.jpg)
讲解SQL Server海量数据导入的最快方法
2008-12-05 16:21:00
Python全景系列之数据类型大盘点
2021-01-10 15:29:19
基于Python搭建人脸识别考勤系统
2021-07-08 10:17:42
![](https://img.aspxhome.com/file/2023/9/78759_0s.jpg)
JSP JavaBean的setProperty属性
2023-07-10 19:58:11
数据挖掘之Apriori算法详解和Python实现代码分享
2022-02-07 00:29:59
![](https://img.aspxhome.com/file/2023/3/87713_0s.jpg)
asp函数判断服务器是否安装了某种组件
2008-10-11 14:45:00
asp组件上传
2010-05-27 12:16:00
Python文件和流(实例讲解)
2023-08-02 19:11:45
纯CSS实现动态提示信息Tooltips
2008-05-22 11:56:00