原文:
# #coding=utf-8
# io.py i/o
# i/o三種主要型別:文字i/o, 二進位制i/o, 原始i/o
# 流物件具有的能力:1. 讀寫, 2.任意隨機訪問, 3.順序訪問(套接字/管道)
# 字元編碼: unicode(16位[2位元組],全球字元) / ascii(8位[1位元組],數字字母) / utf-8(英文8位,中文24位[3位元組])
# 轉碼: utf-8 ==decode("utf-8")==> unicode ==encode("gbk")==> gbk
filepath = "./temp/file.txt";
def demo():
# 開啟 (寫時檔案不存在將自動建立)
f = open(filepath, "w+")
# 寫f.write("her beauty is beyond words!\r\n")
# 重新整理
f.flush()
# 設定指標偏移量
f.seek(0)
# 讀content = f.read() # 讀取資料(預設全部)
print(content)
# 關閉
f.close()
def funs():
# io.open(file, mode='r', buffering=-1, encoding=none, errors=none, newline=none, closefd=true, opener=none) # 內建函式open()的別名
# file: 模式為寫入檔案時,檔案不存在將自動建立
# mode: r(唯讀,指標在開頭) / w(只寫) / a(追加,指標在末尾) / rb(唯讀0b) / wb(只寫0b) / ab(追加0b) / r+(讀) / w+(寫) / a+(追加) / rb+ / wb+ / ab+
# buffering=0 為無緩衝i/o
# --- 文字 i/o ---
f = open("file.txt", "r", encoding="utf-8")
f = io.stringio("her beauty is beyond words!") # 記憶體中的文字流
# --- 二進位制i/o (緩衝i/o) ---
# --- raw i/o (無緩衝i/o) ---
num = io.default_buffer_size # 預設緩衝區大小
try:
pass
except io.unsupportedoperation: # 不支援操作
pass
except io.blockingioerror: # 公共異常
pass
# --- iobase (所有i/o基類) ---
# 描述資訊
num = f.fileno() # 描述流(整數)[底層檔案描述符]
# 寫入
f.writelines(["abc","def"]) # 寫入多行, 不新增行分隔符
# truncate(size=none) // 截斷檔案 (size:none(從0到當前指標位置); < filesize(從0到指定size位置); > filesize(擴充套件部分用0填充))
num = f.truncate(1000)
# 讀取
data = f.readline(size=-1) # 讀取一行, size限制讀取位元組 (二進位制始終:b'\n' 文字:行終止符)
data = f.readlines(hint=-1) # 讀取多行, hint限制讀取行數
# 指標
# seek(offset[, whence]) // 設定指標偏移量, whence:0:開頭(預設);1:當前位置;2:末尾 (注意:只有0b方式開啟才能用1,2)
num = f.seek(5, 0)
num = f.tell() # 當前指標位置
# 重新整理與關閉
f.flush() # 重新整理
f.close() # 重新整理並關閉資料流
# 判斷
boolean = f.closed # 資料流是否已經關閉
boolean = f.isatty() # 是否是互動式(連線到終端)
boolean = f.readable() # 是否可讀
boolean = f.writable() # 是否可寫
boolean = seekable() # 是否支援隨機訪問
# --- rawiobase (原始二進位制i/o的基類, 繼承iobase) ---
# read(size=-1) // 讀取位元組 size限制讀取位元組數,未指定readall()
f.read()
f.readall() # 讀取所有位元組
# --- 文字 i/o (繼承iobase) ---
strs = f.encoding # 字符集
strs = f.errors # 錯誤設定
# 寫入
f.write("string") # 寫入字串
# 讀取(同上)
# read(size=-1) // 讀取位元組 size限制讀取位元組數,未指定readall()
f.read()
f.readall() # 讀取所有位元組
# === 檔案copy案例 ===
def filecopy(filepath):
# 方式一
with open(filepath, "rb") as oldfile, open(filepath + ".back", "wb") as newfile:
for line in oldfile: # 讀取
newfile.write(line) # 寫入
# 方式二
with open(filepath, "rb") as oldfile, open(filepath + ".back", "wb") as newfile:
data = oldfile.read(1024)
while data:
newfile.write(data)
data = oldfile.read(1024)
if __name__ == "__main__":
demo()
funs()
filecopy(filepath)
FA模組資料流
資產主表 select from fa additions v fa where fa.asset id 10014 資產賬簿 select from fa books v where date ineffective is null and book type code mewbg fa new ...
python3 IO程式設計 操作檔案和目錄
操作檔案和目錄的函式一部分放在os模組中,一部分放在os.path模組中。檢視當前目錄的絕對路徑 importos importos.path dir os.path.abspath print dir 把兩個路徑合成乙個時,不要直接拼字串,而要通過os.path.join 函式,這樣可以正確處理不...
io 流(2 緩衝流,轉換流,資料流)
一 緩衝流bufferedreader,bufferedwriter,以字元為單位的流 bufferedinputstream bufferedoutputstream 以位元組為單位 以bufferedreader bufferedwriter 為例 如下 public static void m...