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('慢慢傳去吧!')