我正在编写一个函数,将文本文件中的一行替换为用户输入的一行
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.writelines(file_data)
f.close()
这个函数做得很好,但是,它也会在文件的开头添加空字符
这是我替换第一行后文件的外观:
\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00Replaced text
Sample text2
Sample text3
Sample text4
Sample text5
任何帮助都是非常感谢的,特别是如果有更好的方法来实现这一点
更直接的做法是打开文件进行读取(
'r'
模式)读取,然后重新打开文件进行写入('w'
模式)写入我想你误解了
file.truncate
的作用。它调整了文件的大小,显然用零字节或其他东西填充文件。您需要的是file.seek
,它将当前的写入和读取位置查找到给定的数字。单独而言,当替换行比原始行短时,这可能会出现问题,因此您应该同时使用file.seek
和file.truncate
。此代码适用于:尝试从输入行中删除
"\n"
:相关问题 更多 >
编程相关推荐