Python – Should glob.glob(…) be preferred over os.listdir(…) or the other way around

globlistpython

If I'd like to create a list of all .xls files, I usually use

rdir=r"d:\temp"
flist=[os.path.join(rdir,fil) for fil in os.listdir(rdir) if fil.endswith(".xls")]
print flist

However, I recently saw an alternative to this, which is

rdir=r"d:\temp"
import glob
flist=glob.glob(os.path.join(rdir,"*.xls"))
print flist

Which of these two methods is to be preferred and why? Or are they considered equally (un)sound?

Best Answer

Both are fine. Also consider os.path.walk if you actually want to do something with that list (rather then building the list for its own sake).