所以我写了这段代码:
def character(f):
#Reads one character(byte by byte) from the given text file
c = f.read(1)
while c:
yield c
c = f.read(1)
我希望在下面的函数中解析此值。当我运行此代码时,什么都不会发生。没有错误,但也没有显示输出。 dbc_cabin_read
确实达到了计数器值30,但未打印任何内容。我认为程序不会进入循环。
def dbc_cabin_read(f):
try:
f.seek(0,0)
ctr = 0
for line in f.readlines():
ctr += 1
if ctr == 30:
for c in character(f):
print(c, sep="", end="")
break
finally:
f.close()
在character(f)
中,如果我使用return
而不是yield
,则会发生类型错误:
发生异常:TypeError'NoneType'对象不可迭代
答案 0 :(得分:3)
f.readlines()
读取整个文件。如果您只想阅读前30行,则可以循环调用f.readline()
。然后,您可以使用生成器继续从该位置读取文件。
for _ in range(30):
f.readline()
for c in character(f):
print(c, sep="", end="")