擅长:python、mysql、java
<p>我想你误解了<code>file.truncate</code>的作用。它调整了文件的大小,显然用零字节或其他东西填充文件。您需要的是<code>file.seek</code>,它将当前的写入和读取位置查找到给定的数字。单独而言,当替换行比原始行短时,这可能会出现问题,因此您应该同时使用<code>file.seek</code>和<code>file.truncate</code>。此代码适用于:</p>
<pre class="lang-py prettyprint-override"><code>def file_redact(file_name: str):
line_to_replace = int(input('Enter the line to replace (starting from 1): '))
f = open(file_name, 'r+')
file_data = f.readlines()
file_data[line_to_replace - 1] = input('Write a new line:\n') + '\n'
f.truncate(0)
f.seek(0)
f.writelines(file_data)
f.close()
file_redact("test.txt")
</code></pre>