檔案 游標操作模式詳解

2022-08-24 02:24:11 字數 3303 閱讀 4701

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來進行游標的移動,相對於游標若為正數則向右移動,負數就向左移動。如果向前移動過多超過檔案開頭...