生活随笔
收集整理的這篇文章主要介紹了
Python IO 基本编程示例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一. 基本概念
同步和異步
同步:CPU 等待 IO 的執行結果
異步:CPU 不等待 IO 的執行結果
即:同步和異步的區別就是是否等待 IO 執行的結果
回調模式
打個比方:漢堡做好后,服務員跑來告訴你,這就是回調
輪詢模式
漢堡做好后,服務員會了短信告訴你,而你需要不停的檢查手機,這就是輪詢
二. 文件的讀寫
以只讀的方式打開文件
f
= open("d:/TestData/test.txt", "r")
content
= f
.read
()
f
.close
()
無論是否讀錯都正確關閉文件
try:f
= open("e:/TestData/test.txt", "r")print(f
.read
())
finally:if f
:f
.close
()
用更簡單的方式打開文件(with...open)
with open("d:/TestData/test.txt", "r") as f_obj
:print(f_obj
.read
())
說明:調用 read() 方法時會一次讀取文件的全部內容,如果文件太大,會爆內存
保險起見,可以按如下方式避免上述風險:
1)調用 read(size) 方法,每次讀取 size 個字節的內容
2)調用 readline() 可以每次讀取一行內容
3)調用 readlines() 一次讀取所有內容,并按行返回 list
with open("e:/TestData/test.txt", "r", encoding
= "utf-8") as f_obj
:lines
= f_obj
.readlines
()for line
in lines
:print(line
.strip
())
讀二進制文件
f
= open("d:/TestData/test.txt", "rb")
print(r
.read
())
f
.close
()
字符編碼
f
= open("d:/TestData/test.txt", "r", encoding
= "gbk")
print(f
.read
())
f
.close
()
f
= open("d:/TestData/test.txt", "r", encoding
= "utf-8", error
= "ignore")
print(f
.read
())
f
.close
()
寫文件
Note: 當我們寫文件時,操作系統往往不會立刻把數據寫入磁盤,而是放到內存緩存起來,空閑的時候再慢慢寫入,只有調用 close() 方法時,操作系統才保證把沒有寫入的數據全部寫入磁盤,如果忘記調用 close() 方法,那么很有可能數據只有一部分寫入到了磁盤,造成數據的丟失。所以,還是用方式二:with 語句保險。
以'w'方式寫文件的時候,如果文件原來已經存在,那么會將原來的數據覆蓋,可以傳入'a'以追加的方式寫入文件。
f
= open("d:/TestData/test.txt", "w")
f
.write
("Hello world!
)
f
.close
()
with open("d:/TestData/test.txt", "wa") as f_obj
:f
.write
("Hello world!")
三. StringIO 和 BytesIO
- StringIO 是在內存中讀寫 String
BytesIO 是在內存中讀寫 Byte
StringIO
from io
import StringIO
f
= StringIO
()
f
.write
("Hello ")
f
.write
("world!")
print(f
.getvalue
())
from io
import StringIO
f
= StringIO
("Hello world!")
f
.getvalue
()
BytesIO
StringIO 操作的只能是 string,如果要操作二進制數據,就需要使用 BytesIO。
from io
import BytesIO
f
= BytesIO
()
f
.write
("中文".encode
("utf-8"))
print(f
.getvalue
())
from io
import BytesIO
f
= BytesIO
(b
'\xe4\xb8\xad\xe6\x96\x87')
print(f
.getvalue
())
四、操作文件和目錄
如果要對系統的文件和目錄進行操作,則需要引入 os 模塊
import os
print(os
.name
)
print(os
.uname
())
查看環境變量
import os
print(os
.environ
)
獲取某個環境變量的值,可以調用 --> os.environ.get('key')
import os
print(os
.environ
.get
('PATH'))
print(os
.environ
.get
('Test', 'default'))
操作文件和目錄
操作文件和目錄的函數一部分放在 os 模塊中,一部分放在 os.path 模塊中
- 查看、創建、刪除目錄
Note: 對路徑的合并和拆分并不要求目錄和文件真實存在,它們只是對字符串進行操作
import os
print(os
.path
.abspath
('.'))
print(os
.path
.join
('d:/testdir', 'aa'))
os
.mkdir
("d:/testdir")
os
.makedirs
("d:/testdir/aa")
os
.rmdir
("d:/testdir")
os
.removedirs
("d:/testdir/aa")
print(os
.path
.split
("d:/testdir/file.txt"))
print(os
.path
.splitext
("d:/testdir/file.txt"))
os
.rename
("test.txt", "test.py")
os
.remove
("test.py")
- 文件的復制
由于 os 模塊不提供文件的復制操作,可以用 shutil 模塊來實現復制文件的操作
import shutilshutil
.copyfile
("d:/testdir/file.txt", "d:/file.txt")
總結
以上是生活随笔為你收集整理的Python IO 基本编程示例的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。