我创建了一个小类来在 python 的tempfile.TemporaryFIle
. 我的第一次调用readline
返回一行(如预期的那样),但对该函数的所有后续调用都返回空字符串。
在向您展示源代码之前,这里是上述行为的一个示例:
lines = ["Now is the winter of our discontent",
"Made glorious summer by this sun of York;",
"And all the clouds that lour'd upon our house",
"In the deep bosom of the ociean buried."]
f = EphemeralFile()
f.write('\n'.join(lines)) # just in case writelines is screwing up as well
f.readline()
f.readline()
输出:
'Now is the winter of our discontent'
''
现在这里是注释的类方法。请注意,此方法所属的类不是File
. 相反,它持有对 a 的引用,并为'tell 方法tempfile.TemporaryFile
等方法提供别名:self.tell
TemporaryFile
def readline(self, size=-1):
fptr = self.tell() # alias of self._file.tell
bytes = []
got_line = False
while not got_line:
# self.read is NOT an alias, but calls self._file.read
bytes.append(self.read(256))
offset = '\n' in bytes[-1]
if not bytes[-1] or offset:
end = bytes.pop().split('\n', 1)[0]
bytes.append(end)
got_line = True
plaintext = ''.join(bytes)
# seek is aliased from self._file.seek
self.seek(fptr + len(plaintext) + offset) # rewind; offset is bool.
return plaintext
我一生都无法弄清楚我哪里出错了。我有一个挥之不去的怀疑,认为这是我的一个愚蠢的疏忽,因此非常欢迎新的眼睛。
提前致谢!
编辑:对于那些感兴趣的人,这里是全班。