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

2024-10-02 16:24:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我用python3.4编写了一个python脚本,并用tegrak1处理器在chromebook上运行它。你知道吗

这是密码

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字节?你知道吗


Tags: in脚本true密码forreturndefwith
3条回答

试着在写循环中做这项工作

def fib()

with open("nums", "a") as f:

  <bulk of code>

  f.write(str(n))

你的文件之所以很大,是因为它不停地循环,所以当你终止程序时,会有大量的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

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

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

另外,当您通过Ctrl+C停止脚本时,您可能需要在f.write之后添加另一行f.flush(),以确保更改被刷新到磁盘上。你知道吗

编辑:

或者,正如@tdelaney在评论中提到的(谢谢@tdelaney:),您可以使用append模式,只需将with open('nums', 'w')替换为with open('nums', 'wa')。然而,这种方法:

  1. 效率很低:文件需要为每个数字打开和关闭一次,而这确实是不必要的。你知道吗
  2. 不能很好地处理文件:脚本启动时文件的内容不会被清除。因此,当您多次调用脚本时,该文件将包含以前运行的结果。你知道吗

相关问题 更多 >