一、文件流
1. open方法是打开文件,方法是:
open(“文件名”,‘打开方式’,‘缓存’’)
参数说明:
“文件名”:包含了你要访问的文件路径及文件名称的字符串值。尽量使用绝对路径
‘打开方式’:默认文件访问模式为只读(r)
‘缓存’:如果值<0,寄存区的缓冲大小则为系统默认;
如果值=0,就不会有寄存;
如果值=1,访问文件时会缓存行;
如果值>1的整数,表明了这就是寄存区的缓冲大小;
该参数是非强制性的。
2.mode文件操作模式:
(1)打开方式
r--读 ,w--写 ,a--追加
r+可读可写
w+:打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a+:打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
rb wb ab 读写二进制
(2)对文件作读写操作
1、常规的读操作
(1)read([size])
size:读取的长度,以byte为单位。如果不指定参数,表示一次性读取全部内容,以字符串形式返回,并且每一行结尾会有一个"
"符号。
(2)、readline([size])
调一次读取一行,如果给定了size,有可能返回的只是一行的一部分,以字符串的形式返回,并且结尾会有一个换行符"
"。
读完一行,文件操作标记移动到下一行的开头。返回的是字符串
(3)、readlines([size])
读取多行,给定了size,可以返回读取行数的内容。
2、常规的写操作
(1)、writelines(seq)
seq:把seq(序列)的内容全部写到文件中(多行一次性写入)。也不会自动加入换行符。
注意:序列中的内容也必须是字符串类型的数据,才能成功写入文件。
(2)、write(str)
把str写到文件中,默认是不加换行符的,所以如果想换行的话,得手动加入换行符'
'。
3、读取文件的位置定位
(1)、tell()
返回当前操作文件读取到的位置一个中文:3个字节Windows下‘
’(换行符)占两个字节,Linux下
mac下
.
(2)、seek(x,n) 移动游标到想去的位置
n:,默认是0,起始位置 2:从末尾开始计算偏移;1:从当前位置作为标准位置
x:移动的总距离,可以是正数,可以为负数
3、文件输出方法:
(1) with open("文件名",'打开方式') as '新名字':
print('新名字')
(2) for line in '文件名':
print(line)
二、网上爬虫
实例代码:
response=request.urlopen("https://baike.baidu.com/item/AOP/1332219?fr=aladdin")
fi=open("ccc.py",'w')
page=fi.write(str(response.read()))
fi.close()
其中需要导入requ的包,用方法urlopen找到网址,然后创建文件用来储存,
接着用文件的write方法,对获得的网页的read方法,并转为字符串。最后关闭文件。
三、序列化和反序列化
通过将对象序列化可以将其存储在变量或者文件中,可以保存当时对象的状态,实现其生命周期的延长。
并且需要时可以再次将这个对象读取出来。
用到pickle模块:
# 序列化
with open('abc.pkl', 'wb') as f:
dic = {'age': 23, 'job': 'student'}
pickle.dump(dic, f)
# 反序列化
with open('abc.pkl', 'rb') as f:
aa = pickle.load(f)
print(aa)
总结:即序列化用到dump方法,反序列化用到load方法