目前,我正在使用
def eofapproached(f):
pos = f.tell()
near = f.read(1) == ''
f.seek(pos)
return near
检测在“r”模式下打开的文件(默认值)是否为“at EOF”,即下一个read
将产生EOF条件。你知道吗
我可以这样用:
f = open('filename.ext') # default 'r' mode
print(eofapproached(f))
仅供参考,我正在处理一些现有的代码,这些代码在EOF发生时停止,我希望我的代码在EOF发生之前执行一些操作。你知道吗
我还对更好(例如,更简洁)的函数名的任何建议感兴趣。我想到了eofnear
,但这并不一定能传达出具体的含义。你知道吗
目前,我使用python3,但将来可能会被迫使用python2(遗留系统的一部分)。你知道吗
我制定了这段代码来避免使用
tell
(也许使用tell
更简单):函数的命名有争议。说出事情的名字很无聊,我就是不擅长。你知道吗
函数的工作原理是这样的:取文件的大小,看看我们可以读取N个大小的块并将其存储在
chunks_num
中大约多少次。这个简单的划分让我们接近EOF,问题是你认为接近EOF在哪里?例如,接近最后一个字符还是接近最后第n个字符?如果有关系的话,也许这是需要记住的。你知道吗跟踪此代码以了解其工作原理。你知道吗
您可以使用
f.tell()
找出您在文件中的当前位置。你知道吗问题是,你需要找出文件有多大。 niave(也是有效的)解决方案是
os.path.getsize(filepath)
,并将其与tell()
的结果进行比较,但这将返回以字节为单位的大小,这仅在以二进制模式('rb'
)读取时才是相关的,因为您的文件可能具有多字节字符。你知道吗你最好的解决办法是寻找到底,并返回找出大小。你知道吗
最好在开头运行
char_count
一次,然后将其传递到chars\u left。查找效率不高,但您需要知道文件的字符长度,唯一的方法是读取它。你知道吗如果你在逐行阅读,并且想在阅读最后一行之前知道,你还必须知道你的最后一行有多长,才能知道你是否在最后一行的开头。
如果你逐行阅读,只想知道下一行的阅读是否会导致EOF,那么当
chars_left(f, total) == 0
你知道你在那里(没有更多的行可以阅读)相关问题 更多 >
编程相关推荐