python3 读写文件换行符的方法


Posted in Python onApril 09, 2018

最近在处理文本文件时,遇到编码格式和换行符的问题。

基本上都是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 读写文件换行符的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python3中多线程编程的队列运作示例
Apr 16 Python
简单分析Python中用fork()函数生成的子进程
May 04 Python
Python中super的用法实例
May 28 Python
浅析Python中的getattr(),setattr(),delattr(),hasattr()
Jun 14 Python
python图像常规操作
Nov 11 Python
python对list中的每个元素进行某种操作的方法
Jun 29 Python
numpy添加新的维度:newaxis的方法
Aug 02 Python
用xpath获取指定标签下的所有text的实例
Jan 02 Python
python Web flask 视图内容和模板实现代码
Aug 23 Python
python实现简单图书管理系统
Nov 22 Python
在python中利用try..except来代替if..else的用法
Dec 19 Python
Python如何基于smtplib发不同格式的邮件
Dec 30 Python
Python基于TCP实现会聊天的小机器人功能示例
Apr 09 #Python
Python生成任意范围任意精度的随机数方法
Apr 09 #Python
python网络爬虫学习笔记(1)
Apr 09 #Python
Python中defaultdict与lambda表达式用法实例小结
Apr 09 #Python
Python3 实现随机生成一组不重复数并按行写入文件
Apr 09 #Python
python生成不重复随机数和对list乱序的解决方法
Apr 09 #Python
解决Python的str强转int时遇到的问题
Apr 09 #Python
You might like
php zlib压缩和解压缩swf文件的代码
2008/12/30 PHP
深入php list()函数的详解
2013/06/05 PHP
Codeigniter注册登录代码示例
2014/06/12 PHP
Laravel 5 框架入门(四)完结篇
2015/04/09 PHP
laravel学习教程之关联模型
2016/07/30 PHP
php实现微信扫码支付
2017/03/26 PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
2017/05/03 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
Laravel第三方包报class not found的解决方法
2019/10/13 PHP
文本加密解密
2006/06/23 Javascript
Javascript中暂停功能的实现代码
2007/03/04 Javascript
jquery插件开发方法(初学者)
2012/02/03 Javascript
javascript学习(一)构建自己的JS库
2013/01/02 Javascript
javascript模拟地球旋转效果代码实例
2013/12/02 Javascript
可编辑下拉框的2种实现方式
2014/06/13 Javascript
javascript瀑布流式图片懒加载实例
2020/06/28 Javascript
JS事件添加和移出的兼容写法示例
2016/06/20 Javascript
使用jquery实现的循环连续可停顿滚动实例
2016/11/23 Javascript
对vue v-if v-else-if v-else 的简单使用详解
2018/09/29 Javascript
javascript中this的用法实践分析
2019/07/29 Javascript
解决layui弹出层layer的area过大被遮挡的问题
2019/09/21 Javascript
Vue.js使用axios动态获取response里的data数据操作
2020/09/08 Javascript
vue项目打包为APP,静态资源正常显示,但API请求不到数据的操作
2020/09/12 Javascript
python函数局部变量用法实例分析
2015/08/04 Python
Python如何筛选序列中的元素的方法实现
2019/07/15 Python
python sqlite的Row对象操作示例
2019/09/11 Python
Python使用matplotlib绘制Logistic曲线操作示例
2019/11/28 Python
基于python实现上传文件到OSS代码实例
2020/05/09 Python
在HTML5 Canvas中放入图片和保存为图片的方法
2014/05/03 HTML / CSS
美国本地交易和折扣网站:LocalFlavor.com
2017/10/26 全球购物
加拿大休闲和工业服装和鞋类零售商:L’Équipeur
2018/01/12 全球购物
2014年毕业演讲稿范文
2014/05/13 职场文书
个人三严三实对照检查材料
2014/09/25 职场文书
单位作风建设剖析材料
2014/10/11 职场文书
2016年暑期社会实践活动总结报告
2016/04/06 职场文书
2019年大学生职业生涯规划书最新范文
2019/03/25 职场文书