简体   繁体   中英

Replace only first line of text file in python

I have a text file which consists of many lines of text.

I would like to replace only the first line of a text file using python v3.6 regardless of the contents. I do not need to do a line-by-line search and replace the line accordingly. No duplication with question Search and replace a line in a file in Python

Here is my code;

import fileinput

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

file.close()

The code works partially. If the original first line has string longer than "My first line" , the excess sub-string still remains. To be clearer, if original line is "XXXXXXXXXXXXXXXXXXXXXXXXX" , then the output will be "My first lineXXXXXXXXXXXXXX" . I want the output to be only "My first line" . Is there a better way to implement the code?

You can use the readlines and writelines to do this. For example, I created a file called "test.txt" that contains two lines (in Out[3]). After opening the file, I can use f.readlines() to get all lines in a list of string format. Then, the only thing I need to do is to replace the first element of the string to whatever I want, and then write back.

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)

Reading and writing content to the file is already answered by @Zhang.

I am just giving the answer for efficiency instead of reading all the lines.

Use: shutil.copyfileobj

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

Reference

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM