1.文件和流
2.文件对象
3.文件的基本操作
4.随机文件的读写
5.其它文件读写
6.对象序列化
7.1 文件和流
文件是持久化的数据
可以读一次或有限次数的数据序列(有序数据的集合)
流的起点和终点
输入流和输出流:流的起点:输出流 流的终点:输入流
先流入程序再输出程序
import os
try:
file1 = open("data",'w')
file1.write("10000")
except FileNotFoundError:
print("文件不存在")
except PermissionError:
print("没有足够权限操作")
except BaseException:
print("其它异常")
finally:
file1.close()
不允许写入一个数字,只能是字符串类型,因为打开是文本文件,也可以设置标记,进行写入数字。
一种简化的文件操作方法:with语句(当很确定文件是可以读写的,权限没有问题)
with open("data",'w') as f:
f.write("100")
f.write("300")
7.2 文件对象
文件在python中的代理
打开文件 f1 = open(file,mode = 'r' buffering = -1,encoding = None,errors = None,newline = None,closefd = True,opener = None)
newline为换行回车符
关闭文件 f1.close() 如果没有close的话,可能文件没有变化
文本文件的写入,f为文件对象
f.write(s):把字符串s写入文件
f.writelines(lines):把line中的多个字节序列写入文件
f.flush():强制立即将缓冲区中的数据写入到文件中
7.2文件的基本操作
readlines会返回一个列表(列表中包含换行符)
read()会返回一个字符串类型,其中也有换行符
二进制文件的写入和读入方法:
“wb”写
“ab”“rb+”“wb+”为读写方式
f.readinto(b) 从f中读len(b)个字节写入bytes对象b(如果长度不及len(b)就会读全部,返回真实读取的个数)
7.4随机文件的读写
设置读写指针的位置 f.seek(offset,whence=os.SEEK_SET|os.SEEK_END|os.SEEK_CUR)
-15,os.SEEK_CUR从文件末尾开始往回跳15个字节
7.5 CSV文件操作
csv.reader(csvfile,dialect='excel',**fmtparams)
csv.reader的常用属性 若fr为csv.reader对象,则:fr.line_num返回读入的行数
delimiter为间隔符
BasePath = 'c:\\data\\'
import csv
with open(BasePath+'table.csv','r',encoding="utf-8") as csvfile:
f_csv = csv.reader(csvfile,delimiter = ',')
print('---------Header--------')
print(next(f_csv))
print('---------Data--------')
for row in f_csv:
print(row)
关于next函数
l1 = [1,2,3]#本身不是迭代器
l2 = iter(l1)#迭代器
print(next(l2))#取出第一个
print(next(l2))#取出第二个
csv都是按行操作
csv文件写入也是一样
csvwriter.writerow(row):写入一行数据
csvwriter.writerows(rows):写入多行数据
csvwriter.dialect:返回其dialect的只读属性
7.6对象序列化
对象的序列化与对象的反序列化