f = open(r"y:\new\a.txt", mode="rt", encoding="utf-8") # t讀寫檔案的格式為字串,open返回值檔案物件/檔案控制代碼,是程式的變數值
data = f.read() # 硬碟上的檔案內容讀到記憶體中,os根據指定的encoding把二進位制數轉成t(unicode字串)給程式,t僅限文字檔案
print(data, type(data))
f.close() # close**os資源,close後不能再read,檔案物件是程式的變數值,是程式的資源,仍然存在
with open(r"y:\new\a.txt", mode="rt", encoding="utf-8") as f, \
open(r"y:\new\b.txt", mode="rt", encoding="utf-8") as f1:
pass # 也可以用...
with open(r"y:\new\a.txt", mode="rt", encoding="utf-8") as f:
print(f.readable()) # true
print(f.writable()) # false
with open(r"y:\new\b.txt", mode="wt", encoding="utf-8") as f:
f.write("你好\nhello world.")
f.write("開啟檔案不關的情況下,指標跟著移動,後續新寫入的內容則是追加.但是檔案關了重新開啟,再寫=擦寫")
with open(r"y:\new\a.txt", mode="wb") as f:
f.write("原生格式寫入新內容".encode("utf-8"))
src_file = input("原始檔路徑: ").strip()
dst_file = input("目標檔案路徑: ").strip()
with open(r"%s" % src_file, mode="rb") as f1, \
open(r"%s" % dst_file, mode="wb") as f2:
data = f1.read()
f2.write(data)
for line in f1:
f2.write(line)
file.seek(移動的位元組個數, 三種模式) # 3種模式都以位元組為移動單位
1.1 模式 0 : 從檔案開頭為起點,f.seek(3, 0)從頭往右移動3個位元組
1.2 模式 1 : 從當前指標所在的位置,f.seek(6, 1)前面停在第3位元組,現停在第9位元組
1.3 模式 2 : 從檔案末尾為起點,f.seek(-6, 2)從末尾往左移6位元組,正數右移,負數左移2.1 mode="t"模式: 只能用 模式 0
2.2 mode="b"模式: 都可用 模式 0, 1, 2
file.read(n) # 從當前位置讀到末尾,只有mode="t"模式下,read(n)中n代表字元個數
with open(r"y:\new\a.txt", mode="rt", encoding="utf-8") as f: # 檔案內容:hello你好
print(f.read(6)) # 列印: hello你 ,以字元為單位,中英文都是乙個字元
with open(r"y:\new\a.txt", mode="rb") as f: # 檔案內容:hello你好
print(f.read(6)) # 列印: b'hello\xe4' ,以位元組為單位,utf-8中,中文3位元組,英文1位元組
f.seek(0, 2) # 指標跳到末尾
print(f.tell()) # tell獲取從檔案開頭到當前位置的總位元組數
3.1 測試程式寫入日誌import time
with open('access.log', mode='at', encoding='utf-8') as f:
f.write("%s %s\n" % (time.strftime("%y-%m-%d %h:%m:%s %p"), "程式寫的日誌內容"))
3.2 模擬寫tail -f 檢視日誌import time
with open('access.log', mode='rb') as f:
f.seek(0, 2)
while true:
line = f.readline() # readline每次讀一行
if len(line) == 0: # 沒有日誌的時候, 稍微等待, 減少負載開銷
time.sleep(0.5) # 死迴圈會不停呼叫,負載會公升高
else:
print(line.decode('utf-8'), end='') # 原日誌中\n,列印預設也有,會有兩個\n去掉乙個
with open(r"y:\new\a.txt", mode="wt", encoding="utf-8") as f:
lines = ["aa\n", "bb\n", "cc\n"]
for line in lines: # 這兩行效果等於f.writelines(lines), 實質就是for迴圈取值
f.write(line)
with open(r"y:\new\a.txt", mode="r+t", encoding="utf-8") as f:
f.truncate(3)
with open(r"y:\new\a.txt", mode="rt", encoding="utf-8") as f1:
data = f1.read()
res = data.replace("source", "target")
with open(r"y:\new\a.txt", mode="wt", encoding="utf-8") as f2:
f2.write(res)
import os
with open(r"y:\new\a.txt", mode="rt", encoding="utf-8") as f1, \
open(r"y:\new\.a.txt.swp", mode="wt", encoding="utf-8") as f2:
for line in f1:
f2.write(line.replace("source", "target"))
os.remove(r"y:\new\a.txt")
os.rename(r"y:\new\.a.txt.swp", r"y:\new\a.txt")
python 檔案操作
簡明 python 教程 中的例子,python 執行出錯,用open代替file 可以執行。poem programming is fun when the work is done if you wanna make your work also fun use python f open e ...
python檔案操作
1,將乙個路徑名分解為目錄名和檔名兩部分 a,b os.path.split c 123 456 test.txt print a print b 顯示 c 123 456 test.txt 2,分解檔名的副檔名 a,b os.path.splitext c 123 456 test.txt pri...
Python 檔案操作
1.開啟檔案 如下 f open d test.txt w 說明 第乙個引數是檔名稱,包括路徑 第二個引數是開啟的模式mode r 唯讀 預設。如果檔案不存在,則丟擲錯誤 w 只寫 如果檔案 不存在,則自動建立檔案 a 附加到檔案末尾 r 讀寫 如果需要以二進位制方式開啟檔案,需要在mode後面加上...