<p>你可以那样做-
但这不是通常的方法,当然也不是文本文件的正确方法。你知道吗</p>
<p>正确的方法是编写另一个文件,其中包含要更新的信息,然后将新文件重命名为旧文件。这是处理文本文件的唯一明智方法,因为字段的信息大小(以字节为单位)是可变的。你知道吗</p>
<p>至于“向磁盘写入200字节”而不是一个字节的印象,改变你的值,不要让它愚弄你:在操作系统级别,所有的文件访问都必须在块中完成,这些块通常有几千字节长(在特殊情况下,经过隧道的文件系统可能有几百字节)。无论如何,在用户空间程序中,更不用说像Python这样的高级语言中,您永远不会触发少于几百字节的磁盘写入。你知道吗</p>
<p>现在,对于代码:</p>
<pre><code>import os
my_number = <number you want to place in the line you want to rewrite>
with open("January.txt", "r") as in_file, open("newfile.txt", "w") as out_file:
for line in in_file:
if line.strip() == "0":
out_file.write(str(my_number) + "\n")
else:
out_file.write(line)
os.unlink("January.txt")
os.rename("newfile.txt", "January.txt")
</code></pre>
<p>所以-这是总的想法-
当然,您不应该用这种方式硬编码所有值来编写代码(即,要检查和写入的值与文件名一样固定在程序代码中)。你知道吗</p>
<p>至于<code>with</code>语句—它是语言的一种特殊构造,非常适合打开文件并在块中进行操作,就像在本例中—但它不是<em>需要的</em>。你知道吗</p>
<p>除了编程,你必须记住的概念是:
当您使用允许您编辑文本文件、电子表格、图像的应用程序时,作为用户,<strong>可能会有这样的印象,即在您完成并保存工作后,<strong>更新将被提交到同一个文件中。在绝大多数用例中,<strong>情况并非如此:应用程序在内部使用一种模式,如我上面介绍的模式—一个全新的文件被写入磁盘,旧文件被删除或重命名。少数例外可能是简单的数据库应用程序,它可以在更新时替换文件本身中的固定宽度字段。现代数据库当然不会这样做,而是在文件末尾附加最新的更新信息。PDF文件是另一种类型的文件,在创建时不会在每次更新时完全替换:但在这种情况下,更新的信息会写在文件的末尾,即使更新发生在呈现文档开头的页面中。你知道吗</p>