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

歡迎訪問 生活随笔!

生活随笔

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

python

《Python Cookbook 3rd》笔记(5.8):固定大小记录的文件迭代

發布時間:2023/12/13 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《Python Cookbook 3rd》笔记(5.8):固定大小记录的文件迭代 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

固定大小記錄的文件迭代

問題

你想在一個固定長度記錄或者數據塊的集合上迭代,而不是在一個文件中一行一行的迭代。

解法

通過下面這個小技巧使用 iter 和 functools.partial() 函數:

from functools import partialRECORD_SIZE = 32with open('somefile.data', 'rb') as f:records = iter(partial(f.read, RECORD_SIZE), b'')for r in records:...

這個例子中的 records 對象是一個可迭代對象,它會不斷的產生固定大小的數據塊,直到文件末尾。要注意的是如果總記錄大小不是塊大小的整數倍的話,最后一個返回元素的字節數會比期望值少。

討論

iter() 函數有一個鮮為人知的特性就是,如果你給它傳遞一個可調用對象和一個標記值,它會創建一個迭代器。這個迭代器會一直調用傳入的可調用對象直到它返回標記值為止,這時候迭代終止。

在例子中, functools.partial 用來創建一個每次被調用時從文件中讀取固定數目字節的可調用對象。標記值 b’’ 就是當到達文件結尾時的返回值。

最后再提一點,上面的例子中的文件時以二進制模式打開的。如果是讀取固定大小的記錄,這通常是最普遍的情況。而對于文本文件,一行一行的讀取 (默認的迭代行為) 更普遍點。

總結

以上是生活随笔為你收集整理的《Python Cookbook 3rd》笔记(5.8):固定大小记录的文件迭代的全部內容,希望文章能夠幫你解決所遇到的問題。

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