2017-09-28 359 views
-1

我有一个由多行文本组成的文本文件。只替换python中的第一行文本文件

我想只使用python v3.6替换文本文件的第一行,而不管内容如何。我不需要进行逐行搜索并相应地替换行。没有重复的问题Search and replace a line in a file in Python

这是我的代码;

import fileinput 

file = open("test.txt", "r+") 
file.seek(0) 
file.write("My first line") 

file.close() 

该代码部分工作。如果原始第一行的字符串长度超过"My first line",则多余的子字符串仍然保留。更清楚的是,如果原始行是"XXXXXXXXXXXXXXXXXXXXXXXXX",那么输出将是"My first lineXXXXXXXXXXXXXX"。我想输出只有"My first line"。有没有更好的方法来实现代码?

+0

的[搜索和Python中的文件替换线(可能的复制https://stackoverflow.com/questions/39086/search-and-替换蟒蛇中的文件) – wwii

+0

欢迎来到SO。请花时间阅读[问]和它包含的链接。 – wwii

+0

@wwii,我不认为有重复。我编辑了这个问题。 – user3848207

回答

1

您可以使用readlines和writelines来做到这一点。 例如,我创建了一个名为“test.txt”的文件,其中包含两行(在Out [3]中)。打开文件后,我可以使用f.readlines()获取字符串格式列表中的所有行。然后,我需要做的唯一事情就是将字符串的第一个元素替换为我想要的任何内容,然后写回。

with open("test.txt") as f: 
    lines = f.readlines() 

lines # ['This is the first line.\n', 'This is the second line.\n'] 

lines[0] = "This is the line that's replaced.\n" 

lines # ["This is the line that's replaced.\n", 'This is the second line.\n'] 

with open("test.txt", "w") as f: 
    f.writelines(lines) 
+0

请不要发布代码或数据的图像。请花时间阅读[问]和它包含的链接。 – wwii

+0

是不是第一次正式关闭文件而第二次打开文件的好习惯? – saintsfan342000

+0

@ saintsfan342000其实这是一个很好的观点。我只是试图为所问的问题展示解决方案。你应该总是关闭文件,然后重新打开它。 –

1

读取和写入文件内容已由@Zhang回答。

我只是给出了效率的答案,而不是读取所有的行。

用途:shutil.copyfileobj

from_file.readline() # and discard 
to_file.write(replacement_line) 
shutil.copyfileobj(from_file, to_file) 

Reference