Phoe6 wrote: > Hi all, > Part of my script is to check for pre-requisite rpms to be > installed. > If its installed, I just display the rpm version as in rpm database, > otherwise I output a message saying: > ' rpm is not installed' and collect the rpm name in a list > (notInstalled). > At the end if the len(notInstalled) is greater than 0 then I display > them all asking it to be installed and exit the program. > My Script is below: > ------- > def checkForRpm(rpmname): > ''' Check for the presence of the RPM. ''' > cin,cout,cerr = os.popen3('rpm -q ' + rpmname) > output = cout.read() > global notInstalled > if len(output) <= 0: > print rpmname + ' not installed.' > notInstalled.append(rpmname) > else: > print output > > > > def preReqCheckRpms(): > ''' Check for the required RPMS ''' > listOfRpms = ['firefox','senthil',] > > > for eachRpm in listOfRpms: > checkForRpm(eachRpm) > global notInstalled > if len(notInstalled) > 0: > print 'The following RPMS are not installed:' > for eachRpm in notInstalled: > print eachRpm > print 'Please install them for the installation to > continue.' > sys.exit(-1) >
> * This is NOT Working. > * notInstalled.append(rpmname) is not taking effect in > checkForRpm(rpmname) > * I dont know how to communicate the notInstalled list to > preReqCheckRpms. > > -- > Senthil I think return values should be used for communication between functions. Maybe something like this could work for you (not tested). def checkForRpm(rpmname): # <cut start of function> # Strings with 0 lenght are False if output: print output else: print rpmname + ' is not installed' return output def checkPreReqs(): missingRpms = [] for requiredRpm in listOfRpms: if not checkForRpm(requiredRpm): missingRpms.append(requiredRpm) # you could also do this by a list comprehension missingRpms = [reqRpm for reqRpm in listOfRpms if not checkForRpm(reqRpm)] # or you could use the builtin function filter() - see filter.__doc__ for that # now, list of lenght 0 is False. if missingRpms: # print error messages, exit. -- Juho Schultz -- http://mail.python.org/mailman/listinfo/python-list