python程序设计——文件操作,,分类1.文本文件存储
python程序设计——文件操作,,分类1.文本文件存储
分类
1.文本文件
存储常规字符串,由若干文本行组成,每行以换行符‘\n‘结尾
2.二进制文件
把对象以字节串存储,常见的图形图像、可执行文件、数据库文件office文档等
1 #创建文件 2 >>fw = open(‘sample.txt‘,‘w+‘,encoding=‘utf-8‘) 3 >>s = ‘文本读取方式\n sample.txt w+\n‘ 4 >>fw.write(s) 5 >>fw.close() 6 #查看sample.txt 7 文本读取方式 8 sample.txt w+ 9 10 #建议形式,关键字with可以自动管理资源11 >>s = ‘文本读取方式\n sample.txt w+\n‘12 >>with open(‘sample.txt‘,‘w+‘,encoding=‘utf-8‘) as fw:13 >> fw.write(s)14 # 判断文件对象是否关闭15 >>fw.colsed16 True17 18 #添加文件内容19 >>s = ‘hello\n‘20 >>with open(‘sample.txt‘,‘a+‘,encoding=‘utf-8‘) as fa:21 >> fa.write(s)22 文本读取方式23 sample.txt w+24 hello25 26 # 读取文件内容27 # 读取一行28 >>fread = open(‘sample.txt‘,‘r‘,encoding=‘utf-8‘)29 >>fread.readline()30 ‘文本读取方式\n‘31 >>fread.readline()32 ‘ sample.txt w+\n‘33 >>fread.readline()34 ‘hello\n‘35 36 # 一次读取所有行37 >>fread = open(‘sample.txt‘,‘r‘,encoding=‘utf-8‘)38 >>fread.readlines()39 [‘文本读取方式\n‘, ‘ sample.txt w+\n‘, ‘hello\n‘]40 41 #读取固定字符个数42 >>fread = open(‘sample.txt‘,‘r‘,encoding=‘utf-8‘)43 >>fread.read(4)44 ‘文本读取‘
45 >>fread.close()
可以使用dir() 查看与对象相关的方法,使用help()查看方法的用法
1 >>fread = open(‘sample.txt‘,‘r‘,encoding=‘utf-8‘)2 >>fread.colse()3 >>dir(fread)4 #查看read()函数用法5 >>help(fread.read)
文件序列化
序列化,就是把内存中的数据在不丢失数据类型的情况下,转化为二进制形式的过程
1.使用pickle模块
Pickle是常用并且快速的二进制文件序列化模块
1 #使用pickle dump依次写入二进制文件 2 import pickle 3 f = open(‘sample_pickle.dat‘,‘wb‘) 4 5 alist = [[2,3,4],[6,7,8]] 6 aset = {‘a‘,‘b‘,‘c‘} 7 atuple = (-5,-3,-1) 8 astr = ‘北京欢迎你,welcome!‘ 9 adic = {‘name‘:‘jin‘,‘sex‘:None}10 try:11 pickle.dump(alist,f)12 pickle.dump(aset,f)13 pickle.dump(atuple,f)14 pickle.dump(astr,f)15 pickle.dump(adic,f)16 except:17 print(‘write error‘)18 finally:19 f.close()20 21 #使用Pickle load依次读取二进制文件22 fr = open(‘sample_pickle.dat‘,‘rb‘)23 try:24 x=pickle.load(fr)25 print(x)26 x=pickle.load(fr)27 print(x)28 x=pickle.load(fr)29 print(x)30 x=pickle.load(fr)31 print(x)32 x=pickle.load(fr)33 print(x)34 except:35 print(‘read error‘)36 finally:37 fr.close()
2.使用struct模块
1 import struct 2 import binascii 3 4 values = (1, b‘good‘, 1.22) #字符串必须为字节流类型 5 s = struct.Struct(‘I4sf‘) 6 packed_data = s.pack(*values) #序列解包 7 unpacked_data = s.unpack(packed_data) 8 9 print(‘Original values:‘, values)10 print(‘Format string :‘, s.format)11 print(‘Uses :‘, s.size, ‘bytes‘)12 print(‘Packed Value :‘, binascii.hexlify(packed_data))13 print(‘Unpacked Type :‘, type(unpacked_data), ‘ Value:‘, unpacked_data)14 15 out:16 Original values: (1, b‘good‘, 1.22)17 Format string : b‘I4sf‘18 Uses : 12 bytes19 Packed Value : b‘01000000676f6f64f6289c3f‘20 Unpacked Type : <class ‘tuple‘> Value: (1, b‘good‘, 1.2200000286102295)
python程序设计——文件操作
评论关闭