变量&;“不完全行为”;至于;python中的循环

变量&;“不完全行为”;至于;python中的循环,python,loops,for-loop,while-loop,range,Python,Loops,For Loop,While Loop,Range,我试图在python中循环44100000到44999999之间的数字。 我试过这个: f=open('of','w') i=44100000 while i<=44999999 : f.write(str(i)+"\n") i+=1 注意最后一个数字 不是范围中的最后一个数字 不完整!和其他的长度不一样 当我再次这样做时,同样的代码给了我这个文件的尾部: 44999993 44999994 44999995 44999996 44999997 44999998 第

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

f=open('of','w')
i=44100000
while i<=44999999 :
     f.write(str(i)+"\n")
     i+=1
注意最后一个数字

  • 不是范围中的最后一个数字
  • 不完整!和其他的长度不一样 当我再次这样做时,同样的代码给了我这个文件的尾部:

    44999993
    44999994
    44999995
    44999996
    44999997
    44999998
    
    第三次运行完成并正确输出:

    44999994
    44999995
    44999996
    44999997
    44999998
    44999999
    
    虽然每次都能正常工作:

    for i in range(44100000,44999999):
         f.write('%d\n' % (i,))
    
    有什么问题?
    谢谢

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

    with open('of', 'w') as f:
        f.write("Stuff")
    
    # f.close() will be called automatically upon leaving the with-scope
    

    您是否关闭了文件?或者使用
    f.flush()关闭了文件缓冲区
    flush()
    oooooooooooooooooooooo!看来你是对的;但是为什么
    范围每次都能正常工作呢?thanksIt不感兴趣的是,为什么它显然在
    范围内正常工作。这可能是偶然的。最好的办法是总是关闭文件:)我在不关闭文件的情况下得到完全相同的结果。这一定是由于缓冲区的大小。
    
    with open('of', 'w') as f:
        f.write("Stuff")
    
    # f.close() will be called automatically upon leaving the with-scope