changing names of items in a list

Simon Brunning simon at
Wed Mar 19 15:46:56 CET 2008

On Wed, Mar 19, 2008 at 2:21 PM, royG <roygeorget at> wrote:
> hi
>  i am trying to rename extension of files in a an initial
>  step i made a method in
>  class ConvertFiles:
>      def __init__(self,infldr,outfldr):
>              self.infldr=infldr
>              self.outfldr=outfldr
>              self.origlist=os.listdir(infldr)
>  ....
>      def renamefiles(self,extn):
>              for x in self.origlist:
>                      x=x+"."+extn
>  ...
>  later when i print self.origlist  i find that the elements of list are
>  unchanged..even tho  a print x  inside the renamefiles()  shows that
>  extn is appended to x  ..
>  why does this happen?

Your 'x=' line is building a brand new string, and rebinding the name
'x' to it. It's not doing anything to the original list. See

I'd rewrite that as (untested):

    def renamefiles(self, extn):
        self.origlist = list((x + "." + extn) for x in self.origlist)


    def renamefiles(self, extn):
        self.origlist = list(("%s.%s" % (z, extn)) for x in self.origlist)

Better still, take a look at the os.path module...

Simon B.
simon at
GTalk: simon.brunning | MSN: small_values | Yahoo: smallvalues

More information about the Python-list mailing list