使用尾部和缓冲区获取文件中的最后 K 行
using a tail and a buffer to get last K lines in a file
我得到了这个缓冲区,并被告知进行反向输入以获取文件中的最后 K 行。从我一直在尝试做的事情来看,每次我尝试 运行 它说使用的代码不是输入的属性。有人可以告诉我为什么会这样吗?提前谢谢你。
class Input:
def __init___( self, file ):
self.file = file # must open( <filename>, "rb" )
self.length = 0
self.used = 0
self.buffer = ""
def read( self ):
if self.used < self.length: # if something in buffer
c = self.buffer[self.used]
self.used += 1
return c
else:
self.buffer = self.file.read( 20 ) # or 2048
self.length = len( self.buffer )
if self.length == 0:
return -1
else:
c = self.buffer[0]
self.used = 1
`
尝试缩进...
class Input:
def __init___( self, file ):
self.file = file # must open( <filename>, "rb" )
self.length = 0
self.used = 0
self.buffer = ""
def read( self ):
if self.used < self.length: # if something in buffer
c = self.buffer[self.used]
self.used += 1
return c
else:
self.buffer = self.file.read( 20 ) # or 2048
self.length = len( self.buffer )
if self.length == 0:
return -1
else:
c = self.buffer[0]
self.used = 1
我要冒险尝试猜测问题是您为 __init__
魔术方法使用了错误的名称(正如 Hai Vu 所注意到的)。请注意,您的代码中有三个尾随下划线,而不是两个。
由于 __init__
方法是在构造对象期间调用以设置其各种属性的方法,因此 used
属性永远不会被设置,因为 __init__
函数永远不会 运行.
之后,used
是在 Input.read 中访问的第一个属性,这使得 Python 抱怨它丢失了。
如果我是对的,删除下划线即可解决问题(尽管可能还有其他问题)。
我得到了这个缓冲区,并被告知进行反向输入以获取文件中的最后 K 行。从我一直在尝试做的事情来看,每次我尝试 运行 它说使用的代码不是输入的属性。有人可以告诉我为什么会这样吗?提前谢谢你。
class Input:
def __init___( self, file ):
self.file = file # must open( <filename>, "rb" )
self.length = 0
self.used = 0
self.buffer = ""
def read( self ):
if self.used < self.length: # if something in buffer
c = self.buffer[self.used]
self.used += 1
return c
else:
self.buffer = self.file.read( 20 ) # or 2048
self.length = len( self.buffer )
if self.length == 0:
return -1
else:
c = self.buffer[0]
self.used = 1
`
尝试缩进...
class Input:
def __init___( self, file ):
self.file = file # must open( <filename>, "rb" )
self.length = 0
self.used = 0
self.buffer = ""
def read( self ):
if self.used < self.length: # if something in buffer
c = self.buffer[self.used]
self.used += 1
return c
else:
self.buffer = self.file.read( 20 ) # or 2048
self.length = len( self.buffer )
if self.length == 0:
return -1
else:
c = self.buffer[0]
self.used = 1
我要冒险尝试猜测问题是您为 __init__
魔术方法使用了错误的名称(正如 Hai Vu 所注意到的)。请注意,您的代码中有三个尾随下划线,而不是两个。
由于 __init__
方法是在构造对象期间调用以设置其各种属性的方法,因此 used
属性永远不会被设置,因为 __init__
函数永远不会 运行.
之后,used
是在 Input.read 中访问的第一个属性,这使得 Python 抱怨它丢失了。
如果我是对的,删除下划线即可解决问题(尽管可能还有其他问题)。