Python:对文件的操作
2023-09-11 14:17:00 时间
目录
一:文件的打开和关闭
利用python打开关闭文件需要使用open和close函数
# open(文件路径,访问模式)
# 模式:w 可写
# r 可读
f = open('demo/test.txt','w')
#文件夹是不可以创建的
f.write('hello world')
#文件的关闭
f.close()
其中对文件的访问模式有
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
二、文件的读和写
正常我们创建完一个文件也是要去读取里面的内容,或写里面的内容
写的话就需要使用到write函数
# 文件写数据
# write方法去写数据
fp = open('demo/test.txt','a+')
fp.write('hello world,i am superman\n' * 5)
fp.close()
对应文件中查看一下
读的话需要使用到read函数
这里我读取桌面的一个脚本文件
fp = open('C:\\Users\\siyu.guan\\Desktop\\巡检.txt','r',encoding='UTF-8')
# fp.read是一个字符一个字符读
# fp.readline是一行一行的读,效率会高点,但是只会读一行
# fp.resdlines可以按行读取,但是会将所有的数据都读到,并且一一个列表的形式返回,而列表的元素,是一行一行的数据
content = fp.read()
print(content)
执行后看一下控制台
就会显示出里面的内容,需要注意的是read是按字符,readline是按行来读,效率更高,但是只能读一行,readlines可以读多行,但是是以列表的形式去返回值,需要注意
三、文件的序列化和反序列化
通过文件操作,我们可以将字符写入到一个本地文件,但是,如果是一个对象(例如列表,字典,元组等),就无法直接写入到一个文件里,需要对这个对象进行序列化,然后才能写入到文件里 设计一套协议,按照某种规则,把内存中的数据转化为字节序列,保存到文件,这就是序列化,反之,从文件的字符序列回复到内存中,就是反序列化 python中提供了JSON这个模块来实现数据的序列化和反序列化
序列化
dumps
在使用dumps函数进行序列化时,我们需要先对对象进行序列化,再赋值写入文件中
# 序列化的2种方式
# dumps()
# 导入jsn模块到该文件
import json
# (1)创建一个文件
file = open('demo/test.txt','w')
# 定义一个列表
names = ['yy','zz','apple','banana','yyzz']
# 序列化 我们只会在使用scrapy框架的时候,该框架会返回一个对象,我们要将对象写入到文件中,就要使用json.dumps
# 将names这个列表对象,转化为json格式
names_json = json.dumps(names)
# 写入文件
file.write(names_json)
file.close()
# 读一下文件
file = open('demo/test.txt','r')
content = file.read()
print(content)
file.close()
会发现,我们定义names时是一个list类型,但是通过json.dumps后,就会以string类型输出到文件中,这也是我们想要的。
dump
dump函数就会更简单一点,我们不需要多一层赋值+写入,dump可以自动为我们完成
import json
# dump
# 在将对象转换为字符串的同时,指定一个文件的对象,然后把转换后的字符串写入到这个文件里
f = open('demo/test1.txt','w')
name = ['tt','aa']
# json.dump 内只需指定要序列化的名称和哪个文件就可以直接完成写入
json.dump(name,f)
f.close()
f = open('demo/test1.txt','r')
content1 = f.read()
print(content1)
f.close()
反序列化
比如,我们要将文件中的内容,以列表,元组,字典的形式在python中为为我们展示或方便查询
我们需要使用loads和load函数
# 反序列化
# 将json的字符串变成一个python对象
file = open('demo/test.txt','r')
# 我们读取一下第一个文件内的内容
content = file.read()
# 查看文件内容的类型为string
print(type(content))
file.close()
# 反序列化也有两种方法 loads和load
# loads
result = json.loads(content)
print(result)
print(type(result))
# load
f = open('demo/test1.txt','r')
result = json.load(f)
file.close()
print(result)
print(type(result))
首先我们读取一个上文中序列化后的文件内容,分别对他们进行一个反序列化,并赋值到一个变量中,观察其类型
load和loads的区别:
在使用loads时,我们要先取文件中的内容将它赋值到一个变量,再对他进行一个反序列化,再赋值后,才可以进行查看
load就会简化一步操作,我们直接打开文件后,使用load直接对指定文件进行反序列化,文件内的内容会自动全部反序列化好,我们再进行查看就可以了
相关文章
- Python判断文件是否存在的三种方法
- 【Python成长之路】python 基础篇 -- global/nonlocal关键字使用
- python移动目录下所有子目录文件到新的总目录
- python操作zip文件
- 在Python中操作文件之truncate()方法的使用教程
- 关于python文件操作
- 在Python中操作文件之truncate()方法的使用教程
- Python文件操作注意事项
- Python文件操作详解(二)
- paip.复制文件 文件操作 api的设计uapi java python php 最佳实践
- paip.复制文件 文件操作 api的设计uapi java python php 最佳实践
- Python语言学习:Python语言学习之python包/库package的简介(模块的封装/模块路径搜索/模块导入方法/自定义导入模块实现华氏-摄氏温度转换案例应用)、使用方法、管理工具之详细攻略
- 零基础学Python-爬虫-2、scrapy框架(测试案例篇·技术点在后面文章内讲解)【测试将一篇小说的所有访问路径与标题存储到一个文件下】
- 已解决2.Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and wi
- 已解决2. Set PROTOCOL_BUPFERS_PYTHON_iMPLEMENTATION=python (but this will use pure-Python parsing and w
- Python文件操作:读取、打开、写入、关闭、按行读取、文件指针(附零基础学习资料)
- 〖Python零基础入门篇(55)〗- yaml文件的读取
- 〖Python自动化办公篇㉑〗- python实现邮件自动化 - 定时发送邮件
- Python爬虫基础讲解:数据持久化——文件操作 及 Excel
- 一个超好用的 Python 标准库,操作目录和文件太棒了
- 【Python实验】文件内容操作
- python--文件操作删除某行
- python基础--文件操作实现全文或单行替换
- python基础4--文件操作
- Python文件读写的操作
- 〖Python自动化办公篇⑥〗- word文件自动化 - word操作与读取word文件
- 〖Python自动化办公篇⑬〗- Excel 文件自动化 - 写入 excel 数据(xlsxwriter)
- Python文件操作