以文本模式读取文件,但在Python中也计算原始字节数?

2024-05-16 23:11:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我想以文本模式逐行读取一个文件,但同时我想插入一个中间步骤,它处理字节数据,基本上统计到目前为止读取的字节数。在

在标准库中有没有一种好的方法来实现这一点(无需在字节模式下手动打开、搜索换行、编码等)?最后我需要一个文本读取对象(在CSV阅读器中使用),它还具有一个字节计数器。在


Tags: 文件csv数据对象方法文本编码标准
1条回答
网友
1楼 · 发布于 2024-05-16 23:11:55

Python 2

csv模块使用python2中的二进制文件,因此您只需调用file.tell()方法来获得文件中当前的字节偏移量。在

Python 3

您不能使用text_file.tell()TextIOBase实例),它被记录为返回一个可能与实际字节位置不符的不透明数字。在

如果您的用例可以接受以±bufsize精度获得字节偏移量,那么:

file = open(filename, 'rb') # open in binary mode
text_file = io.TextIOWrapper(file, newline='') # text mode
# pass text_file to csv module
byte_offset = file.tell() # get position ± buffering

相关问题 更多 >