[Tutor] A simpler mousetrap

Kent Johnson kent37 at tds.net
Thu Dec 16 11:48:14 CET 2004


As Wolfram pointed out, os.path.splitext() is a good way to do this. It is also more robust than the 
other solutions because it does the right thing if there is no extension on the original file name. 
I just want to say that your first solution can be written much more simply as
x=a[:a.rfind('.')] + '.bak'

Kent

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


More information about the Tutor mailing list