首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 更多程式設計知識

Python 檔案操作:truncate() 方法截斷檔案大小完整教學

     編輯:更多程式設計知識

truncate() 方法用於縮減檔案大小至指定位元組數,或截斷至目前檔案指標位置。常用於清空檔案內容、保留檔案前段資料、實作日誌輪轉等場景。

語法


fileObject.truncate([size])
  • size(可選):截斷後的檔案大小(位元組)。預設為目前檔案指標位置(tell() 回傳值)。
  • 若 size 大於目前檔案大小,行為平台相關(可能擴充檔案並填充零位元組,或不變)。
  • 唯讀模式開啟檔案時呼叫會引發 IOError。

回傳值

無回傳值(None)。

範例 1:清空檔案內容


with open('log.txt', 'r+') as f:
    f.truncate(0)  # 將檔案大小設為 0,內容清空
# 檔案指標仍在 0 位置

範例 2:保留前 100 位元組


with open('data.bin', 'r+b') as f:
    f.seek(100)
    f.truncate()   # 截斷至第 100 位元組

範例 3:配合讀寫指標操作


#!/usr/bin/python
# 建立測試檔案
with open('foo.txt', 'w') as f:
    f.write('Line 1\nLine 2\nLine 3\nLine 4\nLine 5\n')

# 示範 truncate 行為
with open('foo.txt', 'r+') as f:
    print("Name:", f.name)
    line = f.readline()
    print("Read Line:", line.rstrip())  # Line 1

    # 截斷剩餘內容(從目前指標位置截斷)
    f.truncate()

    # 嘗試再讀取
    line = f.readline()
    print("Read after truncate:", repr(line))  # 空字串 ''

# 輸出結果:
# Name: foo.txt
# Read Line: Line 1
# Read after truncate: ''

注意事項

  • truncate() 不會移動檔案指標,截斷後指標保持原位(可能已超過新檔案末尾,下次讀取回傳空字串)。
  • 若需從頭寫入,截斷後請呼叫 f.seek(0)。
  • 文字模式 ('r+') 下,size 單位為位元組,非字元數,中文編碼需注意。
  • 跨平台行為差異:Windows 下 truncate 擴充檔案可能不支援,Linux/Unix 通常支援稀疏檔案擴充。

實戰場景

  • 日誌輪轉:檔案超過大小限制時,truncate(0) 清空並重寫。
  • 快取檔案更新:讀取舊資料、修改後 seek(0)、truncate()、寫入新資料,確保無殘留舊資料。
  • 臨時檔案清理:處理完畢前截斷釋放磁碟空間。

總結

truncate() 是檔案大小控制的核心方法,配合 seek()/tell() 可實現精準的檔案內容截斷與重寫。記住:預設截斷至目前指標位置,唯讀模式不可用,跨平台擴充行為有差異。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved