如果这个文件有点像缓冲区,是否有一些聪明的方法可以按行读取文件内容(在Python中)?
更具体地说,我正在实现简单的防火墙作为内核模块,它通过 procfs 与用户空间应用程序进行通信。当用户空间应用程序请求打印所有防火墙规则时,将调用 procf_read 函数,并将所有规则存储在缓冲区中,然后将其复制到用户(copy_to_user
func)。如果我使用简单的 for 循环按行读取文件,它会循环遍历文件并打印行就好(假设有 3 个行),但然后它会一遍又一遍地循环打印相同的行,直到读取整个缓冲区(我的猜测)。我想理想地只打印这 3 行,而不在文件末尾插入额外的符号来模拟“EOF”,然后在用户空间(python)中检测它。我正在考虑按字节读取文件,但如何获取以 C 的 fread()
方式读取的字节数?
最佳答案
文件从不包含EOF
,它不是一个角色,所以无法做你想做的事,因为它没有意义。
当您读取文件时,库会用 EOF
标记文件句柄。当它尝试读取超过文件末尾时,之后调用 feof(file)
将返回一个非零值。但没有从文件中读取到 EOF
的字符。字符,如果有那么你如何能够将这个特定值存储在文件中?
参见this了解更多信息。
您可以构建以下解决方案
size_t fileSize;
fseek(file, 0L, SEEK_END);
fileSize = ftell(file);
fseek(file, 0L, SEEK_SET);
现在你知道要传递什么给 fread()
.
关于python - 读取没有 EOF 标志的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29955458/