Python3 I O 資料流 模組

2021-08-09 03:59:21 字數 3395 閱讀 3271

原文:

# #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...