为什么写的python文件大小为5120字节?

时间:2016-03-17 21:38:52

标签: python

我用python3.4编写了一个python脚本,然后在我的Chromebook上用Tegra K1处理器运行它。

这是代码

def fib(n):
    a, b = 1, 1
    for i in range(n - 1):
        a, b = b, a + b
    return a

i = 2
while True:
    n = fib(i)
    with open('nums', 'w') as f:
    f.write(str(n))
print(n)
i += 1

它运行了几分钟,然后我按Ctrl + C关闭它。之后,我检查了名为nums的书面文件的内容。但发现只有1被写入其中,但文件大小为5120 bytes

为什么文件大小为5120字节?

3 个答案:

答案 0 :(得分:0)

循环逻辑似乎不正确:每次只有一个数字要写时,就会打开文件。这是固定版本:

with open('nums', 'w') as f:
    i = 2
    while True:
        n = fib(i)
        f.write(str(n))
        i += 1

此外,当您按Ctrl+C暂停脚本时,您可能希望在f.flush()之后添加另一行f.write,以确保将更改刷新到磁盘上。< / p>

<强>编辑:

或者,正如@tdelaney在评论中提到的那样(谢谢@tdelaney :)),您只需将with open('nums', 'w')替换为with open('nums', 'wa')即可使用追加模式。不过这种方法:

  1. 效率低:文件需要为每个号码打开和关闭一次,而实际上并不需要。
  2. 不能很好地处理文件:脚本启动时不会清除文件内容。因此,当您多次调用脚本时,该文件将包含先前运行的结果。

答案 1 :(得分:0)

尝试在写循环中完成工作

<p class="lead"><?php echo str_replace('&nbsp;', ' ', $aboutus); ?></p>

答案 2 :(得分:0)

你的文件很大的原因是它永远不停地循环,所以当你终止程序时,那里写了很多0个字节。

这是一个有效的解决方案

def fib(n):
    a, b = 1, 1
    for i in range(n - 1):
        a, b = b, a + b
    return a


with open('nums', 'w') as f:
    i = 1
    while i <= 10:
        n = fib(i)
        f.write(str(n) + "\n")
        i += 1