[Tutor] Re: A simpler mousetrap

Alan Gauld alan.gauld at freenet.co.uk
Sun Dec 19 09:40:36 CET 2004


> Also, just as interesting, yet probably less reliable:
>
> a = list(a)
> a[-3:] = 'bak'
> a = "".join(a)
>


The problem with all of these versions is they assume the
extension will be three characters long. In DOS it could be *up to*
three characters, but in Windows post 95 the extension can be longer,
eg .html is often seen. And on non Windows platforms loing extensions
are common.

> OR
>
> a = a.rstrip('pct')
> a = a+'bak'
>
> OR
>
> a = a.rstrip('pct')+'bak'  ## Which is essentially the same thing
>
> OR
>
> a = a[:-3]+'bak'
>
> ETC.
>
> HTH,
> Jacob
>
> > x=os.path.splitext(a)[0]+'.bak'
> >
> > Ah, jolly good, looks a bit simpler. Thanks!
> >
> > Regards,
> >
> > Liam Clarke
> >
> > On Thu, 16 Dec 2004 09:44:03 +0100, Wolfram Kraus
> > <kraus at hagen-partner.de> wrote:
> > > Liam Clarke wrote:
> > > > Hi all,
> > > >
> > > > I'm writing some code, and I want to take a given path +
filename, and
> > > > change the file extension to *.bak.
> > > >
> > > > In doing so, (entirely internal this function), I am
assuming -
> > > >
> > > > That the file will always have an extension
> > > > Thathe extension will vary
> > > > But, it will follow the general DOS format of name.ext
> > > >
> > > > So, I came up with this -
> > > >
> > > > a="./tc/arc/gab.pct"
> > > >
> > > > x=a.replace(a[a.rfind('.'):len(a)],'.bak')
> > > >
> > > > x="./tc/arc/gab.bak"
> > > >
> > > > So, it works, but it feels a bit, well, hacky to me. Not
nearly hacky
> > > > as using an regex though ; )
> > > >
> > > > I thought about
> > > >
> > > > a="./tc/arc/gab.pct"
> > > >
> > > > aList=a.split('.')
> > > > aList[-1]='bak'
> > > > a=".".join(aList)
> > > >
> > > > but I'm wondering if there's a simpler way, as there usually
seems to
> > > > be, and it's always so obvious once I'm shown it, like 6
down - Six on
> > > > vehicle live in the manse (VI + car). Obvious once you know.
> > > >
> > > > Regards,
> > > >
> > > > Liam Clarke
> > >
> > > Hey Liam!
> > >
> > > The os.path module is your friend, especially split and
splitext:
> > > http://docs.python.org/lib/module-os.path.html
> > >
> > > HTH,
> > > Wolfram
> > >
> > > _______________________________________________
> > > Tutor maillist  -  Tutor at python.org
> > > http://mail.python.org/mailman/listinfo/tutor
> > >
> >
> >
> > -- 
> > 'There is only one basic human right, and that is to do as you
damn well
> please.
> > And with it comes the only basic human duty, to take the
consequences.
> > _______________________________________________
> > Tutor maillist  -  Tutor at python.org
> > http://mail.python.org/mailman/listinfo/tutor
> >
> >
>
>
>



More information about the Tutor mailing list