【问题标题】:variable & incomplete behavior "for" loop in pythonpython中的变量和不完整行为“for”循环
【发布时间】:2012-07-08 22:01:00
【问题描述】:

我正在尝试在 python 中循环 44100000 到 44999999 之间的数字。
我试过这个:

f=open('of','w')
i=44100000
while i<=44999999 :
     f.write(str(i)+"\n")
     i+=1

但它不完整! of 文件的尾部是:

44999750
44999751
44999752
44999753
449997

注意最后一个数字

  1. 不是范围内的最后一个数字
  2. 不完整!并且长度不一样!

当我再次这样做时,相同的代码给了我这个文件尾部:

44999993
44999994
44999995
44999996
44999997
44999998

第三次运行完成并正确输出:

44999994
44999995
44999996
44999997
44999998
44999999

虽然每次都能正常工作:

for i in range(44100000,44999999):
     f.write('%d\n' % (i,))

有什么问题? 谢谢

【问题讨论】:

  • 你关闭文件了吗?
  • 或者flush()文件缓冲区f.flush()
  • 哦不不不不不不不不不不不!看来你是对的;但为什么range 每次都能正常工作?谢谢
  • 它显然与range 一起正常工作并不有趣。这可能是随机的机会。最好的办法是始终关闭文件 :)
  • 我在不关闭文件的情况下得到完全相同的结果。这一定是由于缓冲区大小造成的。

标签: python loops for-loop while-loop range


【解决方案1】:

您未能在终止进程之前关闭文件。在with 语句中使用需要清理的资源是一种很好的做法:

with open('of', 'w') as f:
    f.write("Stuff")

# f.close() will be called automatically upon leaving the with-scope

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-19
    • 1970-01-01
    • 1970-01-01
    • 2013-06-12
    • 2014-01-21
    • 2011-05-13
    相关资源
    最近更新 更多