2016-12-04 7 views
0

В настоящее время я использую список ['/etc/hostname', '/opt/sme/sme.conf'] в сценарии python, а также для поиска и замены oldhostname с newhostname в тех файлах в списке, который отлично работает.Скрипт Python3 использует кортеж для поиска и замены строки в нескольких файлах

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() 

Теперь мне нужно заменить значение среды в файле. Вместо повторения кода выше, чтобы заменить значение среды в файле. Кто-нибудь может предложить, как писать код выше, используя кортеж в качестве входных данных. [('newhostname',oldhostname,'/etc/hostname'),('newhostname',oldhostname,'/opt/sme/sme.conf'),('appenv',newappEnv,'/opt/sme/sme.conf')]

ответ

1

Что вы ищете называется кортеж распаковка

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()