IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python爬虫学习笔记_DAY_10_Python文件相关操作详细介绍【Python爬虫】 -> 正文阅读

[Python知识库]Python爬虫学习笔记_DAY_10_Python文件相关操作详细介绍【Python爬虫】

p.s.高产量博主,点个关注💓不迷路!

目录

I.文件的创建和写入

II.文件的读出

III.文件的序列化与反序列化


I.文件的创建和写入

python中,一个文件可以被创建和写入,它的示例代码如下:

# python文件操作
#
# 创建/打开一个文件:test.txt
# 格式为:open(文件的路径;文件的模式)
# 模式有:w 可写   r 可读  a 追加
fp = open('demo/test.txt','w')

# 文件的关闭
# 执行打开、读写操作后要及时关闭文件,释放内存!
fp.close()

# 文件的读写

# 向文件内写入内容:
# 格式为 文件对象.write('内容')
fp_w = open('demo/test1.txt', 'w')
fp_w.write('hello,world\n' * 5)
fp_w.close()

# 在w 写入模式下,每一次打开后,写入的位置都是开头,也即会覆盖之前的内容
# 在a 追加模式下,每一次会紧接着上一次写入的内容,不会覆盖:
fp_a = open('demo/test2.txt', 'a')
fp_a.write('hello\n' * 5)
fp_a.close()

需要注意的是,当文件在路径下不存在的时候,运行'w'写入模式时会自动创建文件并定为写入模式;'a'追加模式下,我们才可以每一次接着前一次的结尾写入,否则'w'模式下每一次都会覆盖前一次写入的内容


II.文件的读出

文件的读操作有很多不同的类型,它的示例代码如下:

# 读取文件的内容
# read函数是按每字节读取,效率较低
fp_r = open('demo/test2.txt', 'r')
content = fp_r.read()
print(content)
fp_r.close()

# readline函数是一行一行的读取,但是调用一次只能读取一行:
fp_l = open('demo/test2.txt','r')
line = fp_l.readline()
print(line)
fp_l.close()

# readlines函数也是按照行来读取,并且可以一次性把所有行都读取到,
# 并返回一个列表的形式:
fp_ls = open('demo/test2.txt','r')
lines = fp_ls.readlines()
print(lines)
fp_ls.close()

需要注意的是,当文件不存在时,运行'r'读出模式是不会新建文件的,反而会抛出异常,因此要注意先新建好文件再读出。


III.文件的序列化与反序列化

最后介绍一下序列化和反序列化,先介绍一下序列化和反序列化的定义:

序列化:将列表、元组、字典等对象转成有序的字符串类型数据。

反序列化:将字符串类型数据转回列表、元组、字典等对象

下面是具体操作的示例代码:

# 文件的序列化和反序列化

# 默认情况下,只能直接将字符串写入文件,列表、元组、字典等对象无法写入文件:
fp = open('demo/test3.txt','w')
fp.write('hello world')
fp.close()
name_list = ['张三','李四']
fp_1 = open('demo/test4.txt','w')
# fp_1.write(name_list) 这句话就会报错,因为无法直接向文件写入列表对象,
# 只能先进行序列化,而后写入
fp_1.close()

# 序列化:对象 - - - > 字节序列(json字符串)

# 序列化有两种方式:
# (1) dumps() 函数 法
# 首先创建一个文件,并定义一个列表:
fp_2 = open('demo/test5.txt','w')
name_list = ['zhangsan','lisi']
# 导入json模块到python文件:
import  json
# 进行序列化:使用json库的dumps()函数进行对象序列化:
names = json.dumps(name_list)
fp_2.write(names)
fp_2.close()

# (2) dump() 函数 法
# 它与dumps()的区别在于
# dump()函数在完成序列化的同时,会指定目标文件,并完成写入操作
# 类似于一步完成dumps()的两个操作:
fp_3 = open('demo/test6.txt','w')
# 这里可以看出,传入的参数多了一个文件对象,也即这就是指定的目标文件,序列化的内容会直接写进去:
json.dump(name_list,fp_3)
fp_3.close()

fp_4 = open('demo/test6.txt','r')
# 此时执行读取,它的结果是一个字符串类型:
content = fp_4.read()
print(type(content))
print(content)
fp_4.close()
# 但是我们的目的是要读出一个列表/元组/字典对象,因此需要做反序列化:

# 反序列化:字节序列 (json字符串)- - - > 对象

# 反序列化也有两种方法:
# (1) loads() 函数 法
fp_5 = open('demo/test6.txt','r')
content = fp_5.read()
# 调用json库中的loads()函数,传入被序列化的字符串变量,返回反序列化的json字符串:
import json
content = json.loads(content)
print(type(content))
print(content)
fp_5.close()

# (2) load()函数 法:
# 此法与dumps和dump的区别一样,也是实现了两步合成一步
# 即读取字符串与字符串转json对象(列表、元组、字典)合并在一步:
fp_6 = open('demo/test6.txt','r')
# 调用json库中的load()函数,同时完成读取+转换json对象:
result = json.load(fp_6)
print(result)
print(type(result))
fp_6.close()

之所以要做序列化和反序列化,在代码中有解释,这里再重复一下,原因在于文件的写入操作不支持字典、元组、列表等对象的写入操作,因而需要先序列化后写入文件,而后读出时执行反序列化操作。🌟🌟🌟

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-01-25 10:32:27  更:2022-01-25 10:32:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 2:45:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码