日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python IO 基本编程示例

發(fā)布時間:2025/3/12 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python IO 基本编程示例 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一. 基本概念

  • 同步和異步
    同步:CPU 等待 IO 的執(zhí)行結果
    異步:CPU 不等待 IO 的執(zhí)行結果
    即:同步和異步的區(qū)別就是是否等待 IO 執(zhí)行的結果

  • 回調模式
    打個比方:漢堡做好后,服務員跑來告訴你,這就是回調

  • 輪詢模式
    漢堡做好后,服務員會了短信告訴你,而你需要不停的檢查手機,這就是輪詢

  • 二. 文件的讀寫

  • 以只讀的方式打開文件
  • # 如果文件不存在,open() 函數(shù)就會拋出一個 IOError 異常 f = open("d:/TestData/test.txt", "r") # 如果文件打開成功,返回一個文件對象,此對象可以調用 read() 方法可以一次讀取文件的全部內容,返回一個str對象 content = f.read() # 關閉文件對象,用以釋放系統(tǒng)資源,因為操作系統(tǒng)同一時間能打開的文件數(shù)量是有限的 f.close()
  • 無論是否讀錯都正確關閉文件
  • try:f = open("e:/TestData/test.txt", "r")print(f.read()) finally:if f:f.close()
  • 用更簡單的方式打開文件(with...open)
  • # 該方式會自動調用 close() 方法 with open("d:/TestData/test.txt", "r") as f_obj:print(f_obj.read())
  • 說明:調用 read() 方法時會一次讀取文件的全部內容,如果文件太大,會爆內存
    保險起見,可以按如下方式避免上述風險:
    1)調用 read(size) 方法,每次讀取 size 個字節(jié)的內容
    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()
  • 字符編碼
  • # 要讀取非 UTF-8 編碼的文件,需要給 open() 函數(shù)傳入 encoding 參數(shù) f = open("d:/TestData/test.txt", "r", encoding = "gbk") print(f.read()) f.close()# 遇到編碼不規(guī)范的文件,可能會報 UnicodeDecodeError 異常, # 出現(xiàn)這種情況的原因可能是文件中夾雜了一些非法的編碼字符, # 可以使用 error 參數(shù),表示遇到驗證碼錯誤后如何處理,下面的操作是直接忽略 f = open("d:/TestData/test.txt", "r", encoding = "utf-8", error = "ignore") print(f.read()) f.close()
  • 寫文件
    Note: 當我們寫文件時,操作系統(tǒng)往往不會立刻把數(shù)據(jù)寫入磁盤,而是放到內存緩存起來,空閑的時候再慢慢寫入,只有調用 close() 方法時,操作系統(tǒng)才保證把沒有寫入的數(shù)據(jù)全部寫入磁盤,如果忘記調用 close() 方法,那么很有可能數(shù)據(jù)只有一部分寫入到了磁盤,造成數(shù)據(jù)的丟失。所以,還是用方式二:with 語句保險。
    以'w'方式寫文件的時候,如果文件原來已經(jīng)存在,那么會將原來的數(shù)據(jù)覆蓋,可以傳入'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,如果要操作二進制數(shù)據(jù),就需要使用 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())

    四、操作文件和目錄

  • 如果要對系統(tǒng)的文件和目錄進行操作,則需要引入 os 模塊
  • import osprint(os.name) # 獲取操作系統(tǒng)的類型 # Note: 如果是 posix,說明系統(tǒng)是 Linux/Unix/Mac OS X, 如果是 nt,就是 Windows 系統(tǒng)print(os.uname()) # 獲取系統(tǒng)的詳細信息. Note: 注意,這個函數(shù)在 Windows 系統(tǒng)上是不提供的
  • 查看環(huán)境變量
  • import osprint(os.environ) # 打印系統(tǒng)所有環(huán)境變量的值

    獲取某個環(huán)境變量的值,可以調用 --> os.environ.get('key')

    import osprint(os.environ.get('PATH')) # 打印環(huán)境變量中 PATH 的值# 打印環(huán)境變量中 Test 的值,如果沒有此值,則用 default 代替 print(os.environ.get('Test', 'default'))
  • 操作文件和目錄
    操作文件和目錄的函數(shù)一部分放在 os 模塊中,一部分放在 os.path 模塊中
    • 查看、創(chuàng)建、刪除目錄
      Note: 對路徑的合并和拆分并不要求目錄和文件真實存在,它們只是對字符串進行操作
    import os# 查看當前目錄的絕對路徑 print(os.path.abspath('.'))# 把兩個路徑合成一個路徑打印出來 print(os.path.join('d:/testdir', 'aa')) # 打印 ‘d:/testdir/aa’# 創(chuàng)建目錄 os.mkdir("d:/testdir") # 此方法不可以級聯(lián)創(chuàng)建 os.makedirs("d:/testdir/aa") # 級聯(lián)創(chuàng)建# 刪除一個目錄 os.rmdir("d:/testdir") # 不可級聯(lián)刪除 os.removedirs("d:/testdir/aa") # 級聯(lián)刪除# 分拆目錄 # 1. 獲取最后一個文件或者目錄 print(os.path.split("d:/testdir/file.txt")) # 打印 --> ('d:/testdir', 'file.txt') # 2. 獲取文件擴展名 print(os.path.splitext("d:/testdir/file.txt")) # 打印 --> ('d:/testdir/file', '.txt')
    • 文件的刪除和重命名
    # 文件重命名 os.rename("test.txt", "test.py")# 刪除文件 os.remove("test.py")
    • 文件的復制
      由于 os 模塊不提供文件的復制操作,可以用 shutil 模塊來實現(xiàn)復制文件的操作
    import shutilshutil.copyfile("d:/testdir/file.txt", "d:/file.txt")

    總結

    以上是生活随笔為你收集整理的Python IO 基本编程示例的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。