w = open('1.txt', 'w', encoding='utf--8') w.write('000\n') #在写入大量数据,要及时处理内存空间,否则内存可能溢出致使数据丢失 #flush:1.将内存中的数据刷新到硬盘中;2.释放文件资源 w.flush() w.write('111\n') # 最后一次flush()操做可省略 w.flush() # 一次输入多行 w.writelines(['asd\n', 'aeqwead\n']) w.close() with open('文件', '模式', encoding='utf-8') as f: # 操做 pass newlines # 读取一个字节,若是是行/文件等结束标识,就返回值,不然返回None
''' r : 读 w : 写(无建立,有清空) a : 追加(有建立功能) t : 文本操做(默认模式) b : 非文本文件必须采用二进制模式 + :可读可写 r+ : 不建立文件的可读可写 | w+:建立清空文件的可读可写 | a+"建立不清空文件(追加)的可读可写 rb : 二进制读 | wb 建立清空文件的二进制写 | ab :建立不清空文件(追加)的二进制写 rb+ | wb+ | ab+ x :建立文件,若是文件已存在就抛异常 U :已被抛弃不用 ''' # with open 语法进行文件复制(边读边写赋值) # 复制文本类文件 with open('source.txt', 'rt', encoding='utf-8') as f1: with open('target.txt', 'a+', encoding='utf-8') as f2: for line in f1: f2.write(line) # 复制非文本类型的数据文件 # 从模式采用b模式 with open(r'source.mps','rb') as f1,\ open(r'target.mp4','wb+') as f2: # rb+/wb/wb+/ab/ab+ for line in f1: f2.write(line)
# 游标 必须在b模式下操做,seek中偏移的是字节 ''' 1.如何使用游标:游标的相关方法 2.游标相关的读写操做 3.根据游标在大文件中取出多个指定位置的部分字节内容 ''' # 游标读: # 方法: seek(偏移量,偏移位置) # 偏移量:移动的字节数 # 偏移位置:0 - 从文件开始位置开始偏移 | 1 - 从当前游标位置开始偏移 | 2 - 从文件末尾开始偏移 with open('source.txt','rt',encoding='utf-8') as f: d1 = f.read() print(d1) #打印游标当前位置 print(f.tell()) # 游标操做:从头开始 f.seek(0,0) d2 = f.read() print(d2) # 游标操做:从当前位置开始 f.seek(3,1) d3 = f.read() print(d3) # 游标操做:从末尾开始 f.seek(-5,2) d4 = f.read() print(d4) # 游标写:(会覆盖书写) with open('source.txt','rb+') as f: f.seek(11) f.write(b'0000') # 写入的内容必须是b字符串,会覆盖后面的内容 # 文件秒传 # 在大文件中,开头 | 1/3 | 2/3 | 末尾 各取10个字节拼接成秒传的信息依据 tagdata = b'' with open(r'001.png', 'rb') as f: data = f.read() length = len(data) # 开头 f.seek(10, 0) d1 = f.read(10) # 1/3 f.seek(length // 3, 0) d2 = f.read(10) # 2/3 f.seek(length // 2 * 3,0) d3 = f.read(10) # 末尾 f.seek(-10,2) d4 =f.read(10) tagdata = d1+d2+d3+d4 newdata = b'' with open(r'002.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) newdata += f.read(10) f.seek(-10,2) newdata +=f.read(10) if newdata == tagdata: print('秒传成功') else: print('慢慢传去吧!')