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 相关文章推荐
基于Python实现定时自动给微信好友发送天气预报
Oct 25 Python
在python中只选取列表中某一纵列的方法
Nov 28 Python
Python数据可视化之画图
Jan 15 Python
python3的print()函数的用法图文讲解
Jul 16 Python
django 中的聚合函数,分组函数,F 查询,Q查询
Jul 25 Python
python实现文件的分割与合并
Aug 29 Python
Python Django实现layui风格+django分页功能的例子
Aug 29 Python
python3 BeautifulSoup模块使用字典的方法抓取a标签内的数据示例
Nov 28 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
Jun 30 Python
Python绘制组合图的示例
Sep 18 Python
PyCharm最新激活码PyCharm2020.2.3有效
Nov 18 Python
python3+PyQt5+Qt Designer实现界面可视化
Jun 10 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 getsiteurl()函数
2009/09/05 PHP
PHP遍历文件夹与文件类及处理类用法实例
2014/09/23 PHP
Laravel路由研究之domain解决多域名问题的方法示例
2019/04/04 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
基于jquery自定义图片热区效果
2012/07/21 Javascript
如何设置iframe高度自适应在跨域情况下的可用方法
2013/09/06 Javascript
Js 去掉字符串中的空格(实现代码)
2013/11/19 Javascript
js sort 二维数组排序的用法小结
2014/01/24 Javascript
c#+jquery实现获取radio和checkbox的值
2020/09/12 Javascript
详解如何使用vue-cli脚手架搭建Vue.js项目
2017/05/19 Javascript
原生JS实现图片无缝滚动方法(附带封装的运动框架)
2017/10/01 Javascript
一个基于react的图片裁剪组件示例
2018/04/18 Javascript
Vue实现PopupWindow组件详解
2018/04/28 Javascript
vue-cli V3.0版本的使用详解
2018/10/24 Javascript
微信小程序云开发实现增删改查功能
2019/05/17 Javascript
jQuery子选择器与可见性选择器实例分析
2019/06/28 jQuery
微信小程序仿淘宝热搜词在搜索框中轮播功能
2020/01/21 Javascript
Python 调用VC++的动态链接库(DLL)
2008/09/06 Python
python 简单的绘图工具turtle使用详解
2017/06/21 Python
Python3 伪装浏览器的方法示例
2017/11/23 Python
Python批量发送post请求的实现代码
2018/05/05 Python
简单了解python元组tuple相关原理
2019/12/02 Python
python 按钮点击关闭窗口的实现
2020/03/04 Python
python判断元素是否存在的实例方法
2020/09/24 Python
泰国国际航空公司官网:Thai Airways International
2019/12/04 全球购物
工业设计专业推荐信
2013/10/29 职场文书
行政部总经理岗位职责
2014/01/04 职场文书
清华大学自主招生自荐信
2014/01/29 职场文书
《孙权劝学》教学反思
2014/04/23 职场文书
2014年房地产销售工作总结
2014/12/01 职场文书
孟佩杰观后感
2015/06/17 职场文书
小学远程教育工作总结
2015/08/13 职场文书
Python 读写 Matlab Mat 格式数据的操作
2021/05/19 Python
室外天线与收音机天线杆接合方法
2022/04/05 无线电
零基础学java之带返回值的方法的定义和调用
2022/04/10 Java/Android
Pandas 数据编码的十种方法
2022/04/20 Python