bobby
bobby

Reputation: 189

Python3 script use tuple to find and replace string in multiple files

I am currently using a list ['/etc/hostname', '/opt/sme/sme.conf'] in python script, and to do find and replace oldhostname with newhostname in those files in the list, which works great.

filelist = ['/etc/hostname', '/opt/sme/sme.conf']  
for filename in filelist :  
    f = open(filename,'r')
    filedata = f.read()
    f.close()

    newdata = filedata.replace('oldhostname',newhostname)

    f = open(filename,'w')
    f.write(newdata)
    f.close()

now I have to replace environment value in a file. Instead of repeating above code twice to replace environment value in a file. Can someone please suggest how to write above code using a tuple as input. [('newhostname',oldhostname,'/etc/hostname'),('newhostname',oldhostname,'/opt/sme/sme.conf'),('appenv',newappEnv,'/opt/sme/sme.conf')]

Upvotes: 0

Views: 67

Answers (1)

dnit13
dnit13

Reputation: 2496

What you are looking for is called tuple unpacking

new_configurations = [('newhostname',oldhostname,'/etc/hostname'),('newhostname',oldhostname,'/opt/sme/sme.conf'),('appenv',newappEnv,'/opt/sme/sme.conf')]

for newhostname, oldhostname, filename in new_configurations : 
    f = open(filename,'r')
    filedata = f.read()
    f.close()

    newdata = filedata.replace(oldhostname,newhostname)

    f = open(filename,'w')
    f.write(newdata)
    f.close()

Upvotes: 1

Related Questions