Python高阶之对文件的操作
随着社会的发展,人们日常的工作量越来大处理的数据也越来越复杂。以前基本面对的都是结构化数据,但随着互联网的兴起,数据已经主要以半结构化和非结构化趋势过度。有新的需求就会推动科技的发展,python在处理文件就显得优势突显出来,python中有非常多的库来支持文件的操作,为办公自动化贡献了自己的一份力量。
1. 常见的文件类型
-
目前我吗常见的文件类型有如下几种:
-
纯文本文件,对于这一种文件指文件内容只能是字符,不能出现图片在里面。
-
pdf文件,PDF是Portable Document Format的简称,意为“可携带文档格式”,是由Adobe Systems用于与应用程序、操作系统、硬件无关的方式进行文件交换所发展出的文件格式。有效的解决在不同操作系统中乱码问题。
-
word文件
-
excel文件,主要用来保存数据
-
csv文件,一种以默认以逗号隔开的分隔值文件
-
json文件,用于网路数据交换
-
各种照片文件
-
各种视频文件
-
二进制文件,用的比较少
2. 读文件操作
文件读取步骤:打开(open)----> 读(read)----关闭释放资源(close)
- 查看系统默认编码方式
import sys
print(sys.getdefaultencoding()) # utf-8
一般电脑默认以utf-8编码,不过也有以gbk编码,编码对于文件的读取很重要,当读取的文件编码不一致就会产生乱码。
-
文件读取底层原理
文件读取时通过指针难过的移动来进行,通过这一原理就可以计算出每个文件的的大小。# 打开一个文件默认方式就是读取,指定读的编码方式 file = open('resources/致橡树.txt','r',encoding='utf-8') file.seek(0,2) # 将指针移动到末尾 print(file.tell()) # 查看文件指针移动字节数。间接的查看文件大小,得到多少个字节。 file.close
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JTSYWPRh-1628524626909)(C:\Users\Administrator\Desktop\Python笔记\图片\指针移动读取文件.png)]
当文件不存在时,会发生FileNotFoundError: [Errno 2] No such file or directory:…,导致程序之间崩溃不在往下执行,这时候我们最后关闭文件的file.close语句就无法执行,如果加上文件又特大的情况下就浪费的电脑的内存毕竟电脑的内存是有限的。
- 解决方式一,使用try except finally结构
file = open('resources/致橡树.txt','r',encoding='utf-8')
try:
data = file.read(32) # 如果是文本文件每次读取按字符读,二进制按字节读,utf-8按3个字节算一个字符
while data:
print(data, end='')
data = file.read(32)
# except:
# print('文件读写错误!')
finally: # 总是执行,finally里面的代码块一定会执行到
file.close()
- 解决方式二,使用上下文语句,with open() as file:
with open('resources/小雨康桥的寺.txt', mode='r', encoding='utf-8') as file:
reade = file.readline() # 按行读取每次只读取第一行
print(reade)
- model 详解
model | 对应功能 |
---|---|
a | 对文件进行追加操作 |
r | 对文本文件进行读 |
rb | 对二进制文件进行读 |
w | 对文件进行写,会对以前的文件进行覆盖 |
wb | 写入二进制,会对已经存在的文件进行覆盖 |
3. 写文件操作
- 在日常的文件操作中我们出了文件的读取操作,其中最为更重要的是写操作希望将数据进行持久化进行保存。
- 写文件步骤,打开文件—>写文件 ————>关闭文件
file = open('resources/小雨康桥的寺.txt', mode='a', encoding='utf-8')
try:
file.write('我做不成燕子\n')
file.write('所以我飞不过感情的墙\n')
finally:
file.close()
同样写文件操作也可以with open() as file 上下文语法
with open('resources/小雨康桥的寺.txt', mode='a', encoding='utf-8') as file:
file.write('我做不成燕子\n')
file.write('所以我飞不过感情的墙\n')
4.csv 文件的读取
-
csv逗号分隔值文件,是一种纯文本文件默认以‘,’进行分割也还可以使用其它分割符作为文件的分割。
-
csv读文件
with open('resources/小雨康桥的寺.txt', mode='r', encoding='utf-8') as file:
reader = csv.reader(file) # 生成一个可迭代对象
for data in reader:
print(''.join(data)) # 默认得到一个列表,用join方法拼接成一个字符串
- csv 写文件
with open('resources/小雨康桥的寺.txt', mode='w', encoding='utf-8') as file:
writer = csv.writer(file) # 创建一个写文件的对象
# print(writer)
writer.writerow(['我做不成燕子\n', '所以我飞不过感情的墙']) # 里面参数为可迭代对象可以是元组、列表
简单总结
通过学习文件的操作可以为我们日常的学习工作带来很大的遍历,日常产生的数据可以进行持久化保存以便后期的查看。python的对文件处理又先天的优势,对于小白也很能够上手。这样是大多数人选择python进行学习来提高处理日常工作的重要原有。
简单总结
通过学习文件的操作可以为我们日常的学习工作带来很大的遍历,日常产生的数据可以进行持久化保存以便后期的查看。python的对文件处理又先天的优势,对于小白也很能够上手。这样是大多数人选择python进行学习来提高处理日常工作的重要原有。