Python文件读写基础:从文本到二进制及int16数据处理

山间有风
山间有风
发布时间:2026-10-13 | 4人浏览过
原创

本文详细讲解Python中文件读写的基础操作,涵盖文本文件与二进制文件的打开模式。重点介绍如何读取int16型波形数据,通过解析两个字节转换为整型。同时提供使用with语句管理文件资源、处理非UTF-8编码(如GBK)以及读写二进制文件的代码实例,帮助开发者掌握基础文件处理技能。

Python文件读写基础:从文本到二进制及int16数据处理

实验室导师布置了一项任务:从.dat文件中提取波形数据,并利用自编码网络进行异常检测。对于初学者而言,这颇具挑战,因此需要从最基础的文件读写操作开始学习。

首先明确数据类型,这是一个int16类型的数组。尽管被称为数组,直接读取并非易事。计算机以二进制形式存储数据,int16是有符号整数,占用16位(即两个字节)。因此,自然的思路是读取两个字节的数据,并将其转换为int16整型(即十进制整型),从而使得数据可被处理。

整型数据范围与Python int特性

此处列出不同位数的整型数据范围,这在编程中经常用到。

  • Int8 //等于byte,-128 127
  • Int16 //等于short, 占2个字节. -32768 32767
  • Int32 //等于int, 占4个字节. -2147483648 2147483647
  • Int64 //等于long, 占8个字节. -9223372036854775808 9223372036854775807

补充一个Python3的小知识点:其int类型是动态长度的长整型,理论上支持无限大的数字。通过运行内建的__sizeof__方法查看int实例占用的字节数,可以发现0占用24个字节,而其他数字通常占用28个字节。

文本文件读取详解

接下来介绍读文件:文本文件。


>>> f = open('/Users/michael/test.txt', 'r')

在Python3中,字符串类型(str)包含Unicode字符。这一特性允许我们在Python3中定义包含Unicode字符的字符串,甚至可以在变量标识符中使用非ASCII字符。

上述代码执行的操作是:定义一个文件对象,该对象指定以读取字符的方式打开文件内容。


>>> f.read()
'Hello, world!'

上面的代码一次性读取文件的全部内容,将内容加载到内存中,并用str对象表示。

此外,还可以调用read(size)方法,每次读取size个字节的内容;或者调用readline()方法,每次读取一行内容。每一行的内容存储在str中,并返回一个包含str的列表。

为了确保文件被正确关闭,可以使用with关键词:


with open('/path/to/file', 'r') as f:
  print(f.read()

若需读取非UTF-8编码的文本文件,需要给open()函数传入encoding参数。例如,读取GBK编码的文件:


>>> f = open('/Users/michael/gbk.txt', 'r', encoding='gbk')
>>> f.read()
'测试'

二进制文件与写入操作

关于二进制文件:

如果要读取二进制文件,只需以rb模式打开文件即可。


>>> f = open('/Users/michael/test.jpg', 'rb')
>>> f.read()
b'\xff\xd8\xff\xe1\x00\x18Exif\x00\x00...' # 十六进制表示的字节

写文件操作:

写文件与读文件类似,调用open()函数时,传入'w'或'wb'分别表示写文本文件或写二进制文件。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表