w:沒有檔案新建檔案,有檔案就清空檔案
w = open('1.txt', 'w', encoding='utf-8')
w.write('000\n')
w.flush() #在寫入大量資料,要及時處理記憶體空間,不然記憶體可能溢位導致資料丟失
w.write('111\n')
w.flush() # 最後一次flush()操作可以省略
w.writelines(['222\n', '333\n']) # 一次性寫入多行
w.write('444')
w.write('555')
w.close() # 1.將記憶體的的資料重新整理到硬碟中;2.釋放檔案資源
# 需求:
1.完成文字型別的檔案複製:1.txt => 11.txt
r = open('1.txt', 'r', encoding='utf-8')
w = open('11.txt', 'w', encoding='utf-8')
for line in r: # 遍歷就是一行一行讀 取讀檔案的流
w.write(line)
w.flush()
w.close()
w.close() # 將檔案的關閉交給with管理,當with中邏輯結束後,系統會自動釋放檔案
2.用with open 方式開啟檔案
with open('1.txt', 'r', encoding='utf-8') as r, open('source.txt', 'w', encoding='utf-8') as w:
for line in r:
w.write(line)
w.flush()
# w.close() 系統自動完成
# r.close()
r: 讀w: 寫(無建立,有清空)
a: 追加(有建立的功能)
t: 文字操作(預設模式) r=>rt w=>wt a=>at
b: 非文字檔案必須採用二進位制模式來處理
+: 可讀可寫
r+: 不會建立檔案的可讀可寫 | w+:建立清空檔案的可讀可寫 | a+:建立不清空檔案(追加)的可讀可寫
例: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 += '666'
with open('1.txt', 'wt', encoding='utf-8') as f2:
f2.write(data)
# a為寫模式,在原資料後追加寫入新資料
with open('1.txt', 'a', encoding='utf-8') as f:
f.write('777')
# 先讀後寫with open('source.txt', 'r', encoding='utf-8') as f1, \
open('target.txt', 'a', encoding='utf-8') as f2:
# 讀取乙個位元組,如果是行/檔案等結束標識,就返回該標識,否則返回none
print(f1.newlines)
first_data = f1.read(9)
f2.write(first_data)
f2.flush()
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)
# 邊讀邊寫賦值
with open('source.txt', 'r', encoding='utf-8') as f1:
with open('target.txt', 'a+', encoding='utf-8') as f2:
for line in f1:
f2.write(line)
with open('333.mp4', 'rb') as f1:with open('666.mp4', 'wb+') as f2:
for line in f1:
f2.write(line)
方法:seek(偏移量, 偏移位置)偏移量:移動的位元組數,負數是結合模式1,2往前偏移
偏移位置:
# -- 0 - 從檔案開始位置開始偏移 | 1 - 從當前游標位置開始偏移 | 2 - 從檔案末尾開始偏移
# b'你好1234567890'
# 游標讀
with open('source.txt', 'rb') as f:
d1 = f.read(11)
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))
檔案操作模式擴充套件 游標操作
with open 檔案 模式 encoding utf 8 as f 操作 pass temp.txt 111222333 with open temp.txt a encoding utf 8 as f f.write new msg 結果 111222333new msg 文字型別檔案的複製 ...
檔案操作模式詳解
一 with的使用 with open a.txt mode rt as f1 res f1.read print res f1 open a.txt mode rt with方法可以在執行完子 後自動關閉檔案,節約記憶體空間。二 指定字元編碼 強調 t和b不能單獨使用,必須跟r w a連用 t文字...
檔案游標操作
include intfseek file stream,long offset,int whence 功能 移動檔案流 檔案游標 的讀寫位置 stream 已經開啟的檔案指標。offset 根據whence來進行游標的移動,相對於游標若為正數則向右移動,負數就向左移動。如果向前移動過多超過檔案開頭...