python文件读写

文章目录

  • 读文件
    • python2&python3差异
    • 示例代码
  • 文件路径
  • 问题处理:字符编码报错

读文件

python2&python3差异

普通模式(python2、python3通用)

f = open(fileName, mode='r')

open函数在python2和python3差异点:

python3支持多个参数,python2只有2个参数,且对于文件编码不支持

#python3
def open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True): # known special case of open#python2
open(name[, mode[, buffering]])

python2如何支持不同编码的文件读写?

import codecs
# 这里增加u是为了防止乱码,详见 https://blog.csdn.net/songlh1234/article/details/83791205
fileNameWrite = u'测试codecs写入gbk.txt'
fileWrite = codecs.open(fileNameWrite, 'w', "gbk")
fileWrite.write('设备编号,deviceID,ehomeKey,执行结果,返回报文\n')

另外这里需要注意,以上代码在python3下执行正常,但write这一行代码在python2下会报错:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 0: ordinal not in range(128)

需要额外设置默认字符

try:# Python2reload(sys)sys.setdefaultencoding("utf-8")
except NameError:print('NameError')

示例代码

UTF-8编码方式打开文件

def openFile(path):f = Nonetry:f = open(path, encoding='UTF-8')except FileNotFoundError:print("open file %s error" % path)else:print("open file %s ok" % path)return f

gb18030编码方式打开文件

def openFile(path):f = Nonetry:f = open(path, encoding='gb18030')except FileNotFoundError:print("open file %s error" % path)else:print("open file %s ok" % path)return f

说明:如果不带encoding参数,会采用系统编码,Windows下默认为gbk
读取文件内容

file_name = r"D:\1.txt"
f = openFile(file_name)
for line in f:print(line)

文件路径

获取当前路径:

os.getcwd()

拼接路径和文件名

fileName1 = os.path.join(filePath, fileName) 

获取文件所在的文件目录

directory_path = os.path.dirname(file_name) # 根据绝对路径,返回所在的目录

问题处理:字符编码报错

读取文件字符时遇到如下问题:

UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xa6 in position 1909: illegal multibyte sequence

问题原因:文档默认使用’gbk’编码打开,但文档实际编码是gb18030,有些字符无法被gbk识别。

解决方案:打开文件的时候可以指定字符集为gb18030

f = open(path, encoding="gb18030")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/208000.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【代码随想录刷题】Day20 二叉树06

文章目录 1.【654】最大二叉树1.1 题目描述1.2 解题思路1.3 java代码实现1.4 总结 2.【617】合并二叉树2.1 题目描述2.2 解题思路2.3 java代码实现 3.【700】二叉搜索树中的搜索3.1 题目描述3.2 解题思路3.3 java代码实现 4.【98】验证二叉搜索树4.1 题目描述4.2 解题思路4.3 j…

盘点11月Sui生态发展,了解Sui的近期成长历程!

11月是Web3的“回暖期”,行业持续展现增长趋势。Sui紧随行业脚步,开展了一系列生态活动。其中历时一个多月的Quest 3游戏活动顺利结束并公布奖励,在多地区成功举办Move和Sui生态黑客松&交流会,还有针对中文社区开发者教育的星…

MQTT协议对比QUIC网络性能测试模拟弱网测试

MQTT正常外网压测数据---时延diff/ms如下图: MQTT弱网外网压测数据 QUIC正常外网压测数据 QUIC弱网外网压测数据 结论: 在弱网情况下,MQTT和QUIC(Quick UDP Internet Connections)这两种协议的网络性能表现也会有…

Axure原型图表组件库,数据可视化元件(Axure9大屏组件)

针对Axure制作的大屏图表元件库,帮助产品经理更高效地制作高保真图表原型,是产品经理必备元件工具。现分享完整的组件库,大家一起学习。 本组件库的图表模块,已包含所有常用的图表,以下为部分组件截图示意。文末可下载…

页面初始化后,需要滚动到某个元素的位置,但是该元素尚未渲染完成。

vue方式 <template><div class"doc"><!-- 判断是否还在渲染期间 --><div class"fixed" v-show"loading">页面仍在渲染中&#xff0c;请稍后</div><div class"green" v-show"!loading">…

TA-Lib学习研究笔记(九)——Pattern Recognition (2)

TA-Lib学习研究笔记&#xff08;九&#xff09;——Pattern Recognition &#xff08;2&#xff09; 形态识别的函数的应用&#xff0c;通过使用A股实际的数据&#xff0c;验证形态识别函数&#xff0c;用K线显示出现标志的形态走势&#xff0c;由于入口参数基本上是open, hig…

反向传播算法

反向传播算法的数学解释 反向传播算法是深度学习中用于训练神经网络的核心算法。它通过计算损失函数相对于网络权重的梯度来更新权重&#xff0c;从而最小化损失。 反向传播的基本原理 反向传播算法基于链式法则&#xff0c;它按层反向传递误差&#xff0c;从输出层开始&…

寒冬不再寒冷:气膜体育馆如何打造温馨运动天地

取暖季即将来临&#xff0c;随着气温逐渐下降&#xff0c;人们在寒冷的冬季里如何保持运动热情和身体的健康成为了一项挑战。而在这个时候&#xff0c;气膜体育馆成为了运动爱好者们的理想场所&#xff0c;提供如春般温暖舒适的运动环境。那么&#xff0c;让我们一起揭秘气膜体…

2024年SEO策略:如何优化您的知识库?

如今很多人在遇到问题时都会求助于谷歌。谷歌已经成为提供解决方案不可或缺的工具。作为全球搜索引擎的巨头&#xff0c;拥有大量用户流量。这就是为什么确保您的产品和服务在谷歌搜索结果中排名靠前是至关重要的&#xff0c;如果您想获得更多的客户&#xff0c;SEO是一个非常关…

Filed II 绘制超声 3D/2D 点扩散函数

点扩散函数可以较好地描述超声对成像目标分辨能力,利用 filed II 仿真工具实现点扩算函数 PSF 的 3D 和 2D 绘制。 定义换能器基本参数 f0=5e6; % Transducer center frequency [Hz] fs=100e6; % Sampling frequency [Hz] c=1540; % Speed of sound [m/s] width=0.15/1000

<Linux> 文件系统

目录 前言&#xff1a; 一、 磁盘 &#xff08;一&#xff09;磁盘的物理结构 &#xff08;二&#xff09;磁盘的物理存储结构 1. 数据存储 2. 存储结构 二、磁盘的逻辑抽象 三、磁盘信息 &#xff08;一&#xff09;具体结构 &#xff08;二&#xff09;重新认识目录…

SOLIDWORKS Flow Simulation电子机箱散热

这一次我们来聊聊电子冷却问题&#xff0c;以这个机箱散热问题为例&#xff0c;我们一般的散热设计要求是CPU不能超过80℃&#xff0c;北桥芯片温度不能超过85℃&#xff0c;南桥芯片不超过95℃。在实际情况下芯片内部的各处温度是不一样&#xff0c;面对与芯片级别的散热分析我…

mysql中MDL(元数据锁)的长事务读写阻塞如何解决

MDL&#xff0c;即元数据锁是什么&#xff0c;我们已经介绍过了 那其存在的长事务读写阻塞问题&#xff0c;一般是怎么解决的呢&#xff0c;主要有两种解决方法。 online ddl MySQL5.6开始&#xff0c;推出一项新功能Online DDL&#xff0c;在ALTER或者CREATE INDEX等语句后添…

【教学类-35-05】17号的学号字帖(A4竖版1份)

作品展示&#xff1a; 背景需求&#xff1a; 大四班17号男孩目前无法自主数学数字。他表示自己能够认识数字&#xff0c;但不会写。 保育老师说&#xff1a;我曾经教过他&#xff0c;抓着手示范的。但是他记不住。家里估计也不练习的。年龄还没到&#xff0c;下学期再看看能不…

有限空间作业中毒窒息事故频发,汉威科技创新方案护航

工贸企业有限空间是我国重大事故多发频发的重点领域之一&#xff0c;安全问题形势严峻。 有限空间是指封闭或者部分封闭、未被设计为固定工作场所&#xff0c;人员可以进入&#xff0c;通风不良&#xff0c;易造成有毒有害物质、易燃易爆气体积聚或者氧含量不足的空间&#xf…

消息中间件基本概念

基本概念 消息队列三个场景&#xff1a;异步&#xff0c;削峰&#xff0c;解耦 异步&#xff1a;将整个流程进行异步发送&#xff0c;也就是说本来顺序执行的程序化流程&#xff0c;异步后可以同时进行操作&#xff0c;互不影响&#xff0c;但保持最终结果一致性&#xff1b;…

ChatGPT颠覆性地改变了个性化学习

开发者欢呼,ChatGPT开启了教育的新时代教育者和学生都将从革命性的技术中受益ChatGPT是由OpenAI开发的强大的语言模型,它在个性化学习领域取得了重大突破。这一新的发展有望彻底改变教育的方式,使其更加定制化、有趣和有效。 开发者和教育者的重大新闻 这一消息对于一直努…

excel做预测的方法集合

一. LINEST函数 首先&#xff0c;一元线性回归的方程&#xff1a; y a bx 相应的&#xff0c;多元线性回归方程式&#xff1a; y a b1x1 b2x2 … bnxn 这里&#xff1a; y - 因变量即预测值x - 自变量a - 截距b - 斜率 LINEST的可以返回回归方程的 截距(a) 和 斜…

jsp使用 分页专用工具

分页器&#xff0c;根据过来的参数计算当着页应当从哪一条记录开始显示&#xff0c;并且显示到哪。 PageUtils [pageSize5, currIndex1, totalCount166, totalPage34, startPosition0] PageUtils [pageSize5, currIndex5, totalCount166, totalPage34, startPosition20] PageUt…

5.10 Windows驱动开发:摘除InlineHook内核钩子

在笔者上一篇文章《内核层InlineHook挂钩函数》中介绍了通过替换函数头部代码的方式实现Hook挂钩&#xff0c;对于ARK工具来说实现扫描与摘除InlineHook钩子也是最基本的功能&#xff0c;此类功能的实现一般可在应用层进行&#xff0c;而驱动层只需要保留一个读写字节的函数即可…