【发布时间】:2012-05-27 09:29:49
【问题描述】:
fin = open('/abc/xyz/test.txt', 'a+')
def lst():
return fin.read().splitlines()
print lst()
def foo(in):
print lst()
fin.write(str(len(lst()) + in)
fin.flush()
在上面的代码中,当print lst() 在函数外被调用时,它会给出正确的结果,但是当尝试在函数foo() 中调用相同的函数时,它会产生空列表,这使得len(lst()) 的值为0。我也尝试通过评论最后两个行,但它仍然返回空列表。上面的代码有什么问题?
【问题讨论】:
-
你为什么在
openingfin外面lst()? -
当你尝试 foo() 中的第一个 lst() 调用时,你会注释掉吗?
-
@olovb 不。我只是为了检查 lst() 是否返回预期值。
-
请注意,您应该尝试使用the
withstatement 在 Python 中打开文件。它更具可读性并确保您的文件已关闭,即使抛出异常也是如此。 -
@Lattyware 请用代码说明。
标签: python