Python读写文件、文件打开方式、特殊文件:音频、压缩、PDF、Excel、CSV、图片、plist等

Python 开发程序中,读写文件是最常见的功能,基本的调用方法也很简单,但细节方面却不见得大家都能了解。所以,本文除了介绍基本用法外,还会介绍那些大家容易忽视的细节。同时,也会介绍特殊文件:音频压缩PDFExcel图片plist 等对应的模块。

基本用法

文件 是用于存储数据的连续字节集,这些数据会以特定格式组织,最后这些字节文件被翻译成二进制文件,以 10 的方式被计算机处理。

Python 对普通的文件的处理,已经内置到内部模块里了,所以,可以直接使用,这也说明了对文件读写是多么基础的功能了。

代码示例:

# 打开文件的读描述符
file = open('./test.txt', 'r') 

pass

# 关闭打开的文件
file.close()

但需要特别注意的是,文件在使用完成后一定要关闭,避免导致各种权限异常错误,即使是在过程中出现异常导致程序崩溃。

常见的处理方式是使用 with ,会在完成后自动关闭文件。

代码示例:

with open('./test.txt', 'r') as file:
	pass

其效果就如同下面的代码示例:

file = open('./test.txt', 'r')
try:
	pass
finally:
	file.close()

代码示例:

with open('./test.txt', 'r') as f:
    # 一次性全部读出来,在读取文章类文件时,比较方便
    # 如果文件过大时,可以使用 read(size),由 size 控制读取的大小,再迭代读取全部内容
	print(f.read()) 
		
	# 一次读取所有内容并按行返回 list ,在读取配置文件、日志时,比较方便
	for line in f.readlines():
		print(line)

	# 每次读取一行内容,在文件很大时,可以有效节省内存占用
	for line in f.readline():
		print(line)

注意阅读代码里的注释,说明了使用的方式。

代码示例:

with open('./test.txt', 'w') as f:
	f.write('Hello World!')
	f.write('\n')

相比读,写的使用方式就很简单了,就是 write 函数。

文件打开方式

Python 的文件读取默认都是 ASCII 编码的文本文件,但并不是所有的文件的都是 ASCII 编码的(比如:图片、视频等),所以我们需要能够二进制文件的功能。

所以,这里整理了一份文件打开方式的说明表格:

模式符号 打开方式 起始位置
r 只读(默认模式) 在文件开头,文件不存在则报错
rb 二进制格式只读) 在文件开头,文件不存在则报错
r+ 可读可写 在文件开头,文件不存在则报错
rb+ 二进制格式可读可写 在文件开头,文件不存在则报错
w 只写 文件存在,则覆盖;不存在,则创建
wb 二进制格式只写 文件存在,则覆盖;不存在,则创建
w+ 可读可写 文件存在,则覆盖;不存在,则创建
wb+ 二进制格式可读可写 文件存在,则覆盖;不存在,则创建
a 追加 文件存在,在文件尾追加;不存在,则创建
ab 二进制格式追加 文件存在,在文件尾追加;不存在,则创建
a+ 可读可写 文件存在,在文件尾追加;不存在,则创建
ab+ 二进制格式可读可写 文件存在,在文件尾追加;不存在,则创建

如果读取的是非 ASCII 编码的文本文件,就必须使用二进制方式打开,再进行解码。

代码示例:

with open('./test.txt', 'rb') as f
	print(f.read().decode('gbk')

特殊文件

在日常处理中会遇到各种特殊的文件,其实就是不同的编码格式,我们没有必要重新发明轮子,使用对应的库,就可以正常处理这类文件。

我在这里整理了一份特殊文件对应的库:

  • csv:读写CSV文件
  • wave:读写WAV文件(音频)
  • aifc:读写AIFF和AIFC文件(音频)
  • sunau:读取和写入Sun AU文件
  • tarfile:读取和写入tar归档文件
  • zipfile:使用ZIP存档
  • configparser:轻松创建和解析配置文件
  • xml.etree.ElementTree:创建或读取基于XML的文件
  • msilib:读取和写入Microsoft Installer文件
  • plistlib:生成并解析Mac OS X .plist文件
  • PyPDF2:PDF工具包
  • xlwings:读取和写入Excel文件
  • Pillow:图像阅读和操作

最后,安利大家一本我写的掘金小册《深入理解NLP的中文分词:从原理到实践》,让你从零开始掌握中文分词技术,踏入NLP的大门。

如果因为以上内容对你有所帮助,希望你能够点赞、转发、评论,多谢多谢!

此公众号每周分享一篇干货文章,实实在在把一个课题说明白,讲清楚,望关注!
惠惠周刊

发布了7 篇原创文章 · 获赞 11 · 访问量 843

猜你喜欢

转载自blog.csdn.net/qq_39839807/article/details/104097732