Python的`文件.read`函数计算出文件的大小?

2024-04-19 11:35:39 发布

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

我正在查看Python-2.7.6的源代码来解决这个问题。你知道吗

Objects/fileobject.c,第1052行,有一个名为file_read的函数,我猜它对应于Python中file对象上的函数read。你知道吗

在同一个文件的第1067行,我看到下面一行。请注意,bytesrequested在函数的下一步中用于决定要分配用于存储文件的缓冲区的大小。你知道吗

 if (!PyArg_ParseTuple(args, "|l:read", &bytesrequested))

看起来请求的字节数是以某种方式编码在args中的,它的类型是PyObject*。因此,继续搜索的自然位置是找出调用file_read的位置。你知道吗

但是,我在整个Python源代码树(recursive grep)中找不到实际调用file_read的地方,因此我无法继续跟踪以找出bytesrequested的实际计算方式。 file_read是否在源树的不同部分以不同的名称调用?你知道吗


Tags: 文件对象函数readifobjects源代码方式
1条回答
网友
1楼 · 发布于 2024-04-19 11:35:39

line 2114

file_read是python的file.read方法。C代码中的args是传递给file.read的参数。bytesrequested是作为参数传递给file.read的内容

with open('file') as fin:
    fin.read(5)  # bytesrequested will be 5.

相关问题 更多 >