简体   繁体   中英

Replace a line in a text file using python

I want to replace some of the contents of my file. I have this code:

username= input("enter your new username")
password= input("enter the new password")

file = open("testfile.txt", "r")
replaced_content = ""
for line in file:
    line = line.strip()
    new_line = line.replace("username:", "username: " + username)
    replaced_content = replaced_content + new_line + "\n"

file.close()
write_file = open("testfile.txt", "w")
write_file.write(replaced_content)
write_file.close()

Here, testfile.txt contains:

username:
password:

The problem is when I input the replacement text, it's being added rather than replaced. For example, when I enter a username, I want to replace the line "username:" by "username: admin"; but when I run the code repeatedly, it gets added repeatedly, thus:

username: admin admin
password:

If my username is already in the text file I want to replace it with an other one and not adding the new to the other. How can I make this work? (I try to not import packages or other things like that in my code.)

Check if the line equal "username:" and only do the replacement then. In this code it will replace the username: in a line "username: admin" with "username: " + username giving you the extra admin at the end

The issue is that you find a "username:" in the line and replace it with "username: " + username. So if you had a line like "username: admin", it would simply replace the username as asked, and it would become "username: admin admin".

Try changing the

new_line = line.replace("username:", "username: " + username)

to

new_line = "username: " + username if line.count("username:") > 0 else line

Try this (untested, please report of any errors found)v

username= input("enter your new username")
password= input("enter the new password")
new_l=[username, password]

write_file = open("testfile.txt", "r+")
lines=write_file.readlines()

for i,j in zip(lines, new_l):
        write_file.write(i.strip('\n')+j)
        write_file.write('\n')
write_file.close()

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