![]() |
|
|
|||||||
![]() |
Python - How to get the extension of a filename from the path |
|
|
Thread Tools | Search this Thread |
|
|
#1 |
|
Hello,
what is a way to get the the extension of a filename from the path? E.g., on my XP windows the path can be C:\Pictures\MyDocs\test.txt and I would like to get the the extension of the filename, that is here txt I would like that to work on Linux also Thank you for help L. Lad |
|
|
|
|
#2 |
|
Posts: n/a
|
Lad wrote:
> Hello, > what is a way to get the the extension of a filename from the path? > E.g., on my XP windows the path can be > C:\Pictures\MyDocs\test.txt > and I would like to get > the the extension of the filename, that is here > txt > > > I would like that to work on Linux also > Thank you for help > L. Like this, you mean? >>> import os.path >>> os.path.splitext("c:\\pictures\\mydocs\\test.txt") ('c:\\pictures\\mydocs\\test', '.txt') -- Dale Strickland-Clark Riverhall Systems www.riverhall.co.uk Dale Strickland-Clark |
|
|
|
#3 |
|
Posts: n/a
|
On Thu, 8 Dec 2005, Lad wrote:
> what is a way to get the the extension of a filename from the path? > E.g., on my XP windows the path can be > C:\Pictures\MyDocs\test.txt > and I would like to get > the the extension of the filename, that is here > txt You want os.path.splitext: >>> import os >>> os.path.splitext("C:\Pictures\MyDocs\test.txt") ('C:\\Pictures\\MyDocs\test', '.txt') >>> os.path.splitext("C:\Pictures\MyDocs\test.txt")[1] '.txt' >>> > I would like that to work on Linux also It'll be fine. tom -- [Philosophy] is kind of like being driven behind the sofa by Dr Who - scary, but still entertaining. -- Itchyfidget Tom Anderson |
|
|
|
#4 |
|
Posts: n/a
|
"Lad" <> wrote:
> what is a way to get the the extension of a filename from the path? > E.g., on my XP windows the path can be > C:\Pictures\MyDocs\test.txt > and I would like to get > the the extension of the filename, that is here > txt > > I would like that to work on Linux also > Thank you for help os.path.splitext(filename) splits a filename into a name part (which may include a path) and an extension part: import os f, e = os.path.splitext(filename) the extension will include the separator, so the following is always true: assert f + e == filename if you don't want the period, you can strip it off: if e[:1] == ".": e = e[1:] but it's often easier to change your code to take the dot into account; instead of if e[:1] == ".": e = e[1:] if e == "txt": handle_text_file(filename) elif e in ("png", "jpg"): handle_image_file(filename) do if e == ".txt": handle_text_file(filename) elif e in (".png", ".jpg"): handle_image_file(filename) on the other hand, for maximum portability, you can use f, e = os.path.splitext(filename) if e.startswith(os.extsep): e = e[len(os.extsep):] if e == "txt": ... but that's probably overkill... </F> Fredrik Lundh |
|
|
|
#5 |
|
Posts: n/a
|
Lad wrote: > Hello, > what is a way to get the the extension of a filename from the path? > E.g., on my XP windows the path can be > C:\Pictures\MyDocs\test.txt > and I would like to get > the the extension of the filename, that is here > txt > > > I would like that to work on Linux also > Thank you for help > L. minor footnote: windows paths can be raw strings for os.path.split(), or you can escape "/" tho Tom's examp indicates unescaped, non-raw string works with splitext() import os.path # winpath='C:\\Pictures\\MyDocs\\test.txt' winpath=r'C:\Pictures\MyDocs\test.txt' fpath,fname_ext=os.path.split(winpath) print "path: %s ;;;;; fname and ext: %s"%(fpath, fname_ext) ext=fname_ext.split(".")[-1] print ext gene tani |
|
|
|
#6 |
|
Posts: n/a
|
Fredrik Lundh wrote:
> on the other hand, for maximum portability, you can use > > f, e = os.path.splitext(filename) > if e.startswith(os.extsep): > e = e[len(os.extsep):] > if e == "txt": > ... Is there ever a time when the original `e` could evaluate True, yet not startswith(os.extsep)? In other words, could the first test be just if e: e = e[len(os.extsep):] Also, note that for truly maximum portability one probably needs to add to the code some knowledge of case-sensitivity and do a .lower() when appropriate, as "txt" and "TXT" (and others) are equivalent on Windows file systems. On that note, is there a common idiom for detecting that information? -Peter Peter Hansen |
|
|
|
#7 |
|
Posts: n/a
|
Thank you ALL for help
Regards, L. Lad |
|
|
|
#8 |
|
Posts: n/a
|
Lad wrote: > Thank you ALL for help > Regards, > L. addendum: ASPN Python cookbook often has something relevant / modifiable for your needs: http://aspn.activestate.com/ASPN/Coo...n/Recipe/81931 http://aspn.activestate.com/ASPN/Coo...n/Recipe/52661 (in this case code from 2001 / 2 is probably py 2.0 or 2.1, shd still work) gene tani |
|
|
|
#9 |
|
Posts: n/a
|
On Thu, 8 Dec 2005, gene tani wrote:
> Lad wrote: > >> what is a way to get the the extension of a filename from the path? > > minor footnote: windows paths can be raw strings for os.path.split(), > or you can escape "/" > tho Tom's examp indicates unescaped, non-raw string works with > splitext() DOH. Yes, my path's got a tab in it, hasn't it! tom -- Women are monsters, men are clueless, everyone fights and no-one ever wins. -- cleanskies Tom Anderson |
|
![]() |
| Thread Tools | Search this Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| javascript relative path to load xml file | torontodesi | Software | 2 | 02-26-2009 01:13 PM |
| "src" path changing automatically?? | lisaj | Software | 0 | 04-03-2008 11:36 AM |
| Orcas Implications on Current MCTS Web Developer Path | John2021 | MCTS | 11 | 11-22-2007 03:02 PM |
| how to upload a folder path??? | chinna | Software | 0 | 10-03-2006 11:47 AM |
| Set default path of <input type = file> | vj_india | Software | 1 | 09-15-2006 06:17 PM |