pytthon—day8 读写模式的结合、文件操作模式、w…
2019-04-11 10:14:49来源:博客园 阅读 ()
一、读写模式的结合
w:写指没有新建文件,有文件就清空
w=open('1.txt','w',encoding='utf-8') w.write('000\n') 在写入数据时,需要及时处理内存空间,不然内存溢出到值数据丢失 w.flush() w.write('222\n') 最后一次flush()刷新操作可以省略 w.flush() w.close()
1、将内存的数据刷新到硬盘中
2、释放文件资源
可以一次性写多行 \n:指换行
w.writelines(['1111\n','33333\n'])
需求:
1、完成文本文件类型的文件复制:1.txt》》》11.txt r=open('1.txt','r',encoding='utf-8') w=open('11.txt','r',encoding='utf-8') for line in r: w.write(line) w.flush() w.close() r.close()
2、将文件的关闭交给with管理,当with逻辑结束后,系统会自动释放文件 with open('1.txt','r',encoding='utf-8') as r,open('11.txt','w',encoding='utf-8')as w: for line in r : w.write(line) w.flush() # w.close() r.close()系统(with open)自动运行完成,自动忽略
二、文件操作模式
r=读
w=写,无创建有清空
a=追加 有创建无清空
t=文本操作(默认模式)》》at wt rt
+=可读可写 r+:不会创建文件的可读可写 w+:创建文件/清空的可读可写 a+:创建文件不清空文件的可读可写
b=非文本文件必须采用二进制的模式处理
rb: 二进制读 | wb:创建清空文件的二进制写 | ab: 创建不清空文件(追加)的二进制写
rb+ | wb+ | ab+
x=创建文件,如果文件已存在就抛异常,属于写模式
with open('1.txt','wt',encoding= 'utf-8') as f: f.write('666') 借助读写,完成追加
方法一(复杂版) with open('1.txt','rt',encoding= 'utf-8') as f1: data=f1.read() data+='6666' with open('1.txt','wt',encoding= 'utf-8') as f2: f2.write(data)
方法二(简单版) with open('1.txt','rt',encoding= 'utf-8') as f: f.write('6666')
x:写模式,创建文件,如果文件以存在,就抛异常 with open('000.txt', 'x', encoding='utf-8') as f: pass
三、with完成文本文件复制
文件的复制:就是先读后写
1、文本类型文件的复制
先读后写 with open('source.txt', 'r', encoding='utf-8') as f1, \ open('target.txt', 'a', encoding='utf-8') as f2: ''' 读取一个字节,如果是行/文件等结束标识,就返回该标识,否则返回None ''' print(f1.newlines) # 》》》》添加是返回值none first_data = f1.read(9) f2.write(first_data) f2.flush() # 》》》》》读取的是第一行 print(f1.newlines) # 》》》》最后一个字节是空返回空值 second_data = f1.readline() f2.write(second_data) f2.flush() last_data = f1.read() f2.write(last_data) f2.flush() print(f1.newlines) data = f1.read() print(data)
2、用with open语法如何处理?
边读边写 with open('source.txt', 'r', encoding='utf-8') as f1: with open('target.txt', 'r', encoding='utf-8') as f2: for line in f1: f2.write(line)
3、如果复制非文本类型的数据文件?
with open('333.mp4', 'rb') as f1: with open('666.mp4', 'wb+') as f2: for line in f1: f2.write(line)
四、游标操作
如 百度网盘——秒传
1、如何使用游标,游标的相关方法
方法:seek
偏移量:移动的字节数,负数是结合1,2位置往前偏移
偏移位置:0:代表游标移至文件/数据的开头
1代表:当前游标的位置开始偏移
2:代表:从文件末尾开始偏移
2、游标相关的读写操作
b'你好1234567890' # 游标读 with open('source.txt','rt',encoding='utf-8')as f: d1=f.read() print(d1) f.seek(0,0) # 游标操作——从头开始 d2=f.read() print(d2) # 游标读 with open('source.txt', 'rb') as f: d1 = f.read() print(d1) # print(d1.decode('utf-8'))# 》》》解码的过程,不加则输出为二进制的数据 当前游标的位置 print(f.tell()) 游标操作 - 从末尾位置开始 f.seek(-3, 2) d2 = f.read() print(d2.decode('utf-8')) # 890 游标操作 - 从当前位置开始 f.seek(-3, 1) d2 = f.read() print(d2.decode('utf-8')) # 34567890 游标操作 - 从头开始 f.seek(3, 0) d2 = f.read() print(d2) print(d2.decode('utf-8')) # 好1234567890
游标写:会覆盖书写 with open('source.txt', 'rb+') as f: f.seek(11) # print(f.read()) f.write(b'000')
案例 with open('001.png', 'rb') as f: data = f.read() print(len(data))
3、根据游标在大文件中取出多个指定位置的部分字节内容
在大文件中,开头| 1/3 | 2/3 | 末尾 各取10个字节拼接成秒传的信息依据 形成秒传规则 tagData = b'' with open('001.png', 'rb') as f: 通过其他途径(sys模块)来获取文件总大小 data = f.read() length = len(data) 开头 f.seek(0, 0) d1 = f.read(10) # 1/3 f.seek(length // 3, 0) d2 = f.read(10) # 2/3 f.seek(length // 3 * 2, 0) d3 = f.read(10) 末尾 f.seek(-10, 2) d4 = f.read(10) tagData = d1 + d2 + d3 + d4 秒传依据 print(tagData)
newData = b"" with open('001.png', 'rb') as f: data = f.read() length = len(data) f.seek(0, 0) newData += f.read(10) f.seek(length // 3, 0) newData += f.read(10) f.seek(length // 3 * 2, 0) newData += f.read(10) f.seek(-10, 2) newData += f.read(10) if newData == tagData: print('秒传成功') else: print('慢慢传去吧')
原文链接:https://www.cnblogs.com/zhouqinmei/p/10615415.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 文件读写操作 2019-07-24
- python学习之操作文件读写修改 2019-06-13
- Python的open函数文件读写线程不安全,logging模型文件读写 2019-04-28
- day89 DjangoRsetFramework学习---restful规范,解析器组件,P 2019-04-18
- 一篇搞懂python文件读写操作(r/r+/rb/w/w+/wb/a/a+/ab) 2019-04-12
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash