【发布时间】:2018-10-18 22:24:44
【问题描述】:
我的问题可能是一个基本问题,但我还没有找到任何答案。我的目标是编写一个程序来解析文本文件中的新条目,并在该行超过 5 个字符时输出它们。考虑以下按预期工作的代码:
from pygtail import Pygtail
def parse(input):
for line in input:
if len(line) > 5:
print(line)
def main():
tail = Pygtail('D:\\test.txt')
while True:
parse(tail)
main()
但是,如果我希望 parse 函数返回一个值并让 main 函数打印返回的内容,我会在输出中一遍又一遍地得到 None。错误代码:
from pygtail import Pygtail
def parse(input):
for line in input:
if len(line) > 5:
return line
def main():
tail = Pygtail('D:\\test.txt')
while True:
x = parse(tail)
print(x)
main()
我知道None 是默认返回值,但我没有得到的是,当我尝试在文件中保存更长的行时,它似乎并不重要,并且会一直打印出@ 987654325@。它会以某种方式弄乱文件的偏移量吗?在我看来,这两个版本的代码应该表现相同,但他们没有。谁能解释这是为什么?
【问题讨论】:
-
粘贴代码时出错。 return 语句在我的实际代码中正确缩进。
-
当你得到解决方案时,请记得给有用的东西投票并接受你最喜欢的答案(即使你必须自己写),这样 Stack Overflow 才能正确存档问题。跨度>
标签: python loops parsing return