我正在创建一个文件编辑系统,并希望使用基于行的tell()函数,而不是基于字节的函数。这个函数将在"with循环"中与open(file)调用一起使用。这个函数是一个类的一部分,它具有以下功能:
以下是原始函数(如果你想要换行和字节返回,也可以设置字符):
self.f = open(self.file, 'a+')
# self.file is a string that has the filename in it
以下是原始函数(如果你想要换行和字节返回,也可以设置字符):
def tell(self, char=False):
t, lc = self.f.tell(), 0
self.f.seek(0)
for line in self.f:
if t >= len(line):
t -= len(line)
lc += 1
else:
break
if char:
return lc, t
return lc
我遇到的问题是,这会返回一个OSError,并且与系统如何迭代文件有关,但我不明白其中的问题。感谢任何能够帮助的人。
OSError
的属性,它会给你(和我们)一些额外的信息。我的第一个问题是,既然这是一个_OS_错误:你的操作系统是什么?此外(可能相关):为什么/如何以追加模式打开文件,然后在其中进行seek
? - Kevin J. Chase