home changes contents help options

131:ディレクトリとファイル一覧を取得する

os.listdir(path)を使うと、pathにあるすべてのファイルとサブディレクトリの名前からなるリストを返す。順番は不動。

http://www.python.jp/doc/release/lib/os-file-dir.html

 >>> os.listdir('c:/')
 ['PAGEFILE.SYS', 'WINNT', 'python22jp', 'ntldr', 'bootfont.bin', 'NTDETECT.COM', 'boot.ini', 'Documents and Settings',  'Program Files', 'CONFIG.SYS', 'AUTOEXEC.BAT', 'IO.SYS', 'MSDOS.SYS', 'notes.rip', 'FOUND.000', 'Python23jp', 'arcldr.exe', 'arcsetup.exe', 'httpd142k', 'zope264rc2', 's1vc', 's1vc.1', 'Zope-Instance', 'hiberfil.sys', 'feedparser', 'data', 'AUTOEXEC.CAM', 'temp', 'uninst.log', 'Recycled', 'notes', 'lamseek.ini', 'WUTemp', 'tracert']

dircacheモジュールのlistdir関数を使う方法もある、この場合、結果はソートされる。また、dircacheモジュールは、返されたリストをキャッシュするので、同じディレクトリのリストが何度も要求される場合はこちらの方が速い。dircacheモジュールは変更を自動的に検出するので、dircache.listdirが返す値は常に最新である。

 >>> import dircache
 >>> dircache.listdir('c:/')
 ['AUTOEXEC.BAT', 'AUTOEXEC.CAM', 'CONFIG.SYS', 'Documents and Settings', 'FOUND.000', 'IO.SYS', 'MSDOS.SYS', 'NTDETECT.COM', 'PAGEFILE.SYS', 'Program Files', 'Python23jp', 'Recycled', 'WINNT', 'WUTemp', 'Zope-Instance', 'arcldr.exe', 'arcsetup.exe', 'boot.ini', 'bootfont.bin', 'data', 'feedparser', 'hiberfil.sys', 'httpd142k', 'lamseek.ini', 'notes', 'notes.rip', 'ntldr', 'python22jp', 's1vc', 's1vc.1', 'temp', 'tracert', 'uninst.log', 'zope264rc2']

次のプログラムを動かすと、tempディレクトリにあるファイルとディレクトリのリストとサイズ、最終更新日が得られる。

 import os,time
 path='c:/temp'
 file_list=os.listdir(path)
 for file in file_list:
   file = os.path.join(path,file)
   print file,os.stat(file).st_size,time.ctime(os.stat(file).st_mtime)

ワイルドカードを使ったリストにはglobを使います。

http://www.python.jp/doc/release/lib/module-glob.html

 >>> import glob
import os
path=os.getcwd()
print path
print glob.glob(path+'/*.py')
print glob.glob('*.py')
/home/zope
['/home/zope/ping.py', '/home/zope/getfilesize.py', '/home/zope/get_jpeg.py', '/home/zope/test.py', '/home/zope/check_number.py', '/home/zope/getweb.py', '/home/zope/getweburllib.py', '/home/zope/printavailable.py']
['ping.py', 'getfilesize.py', 'get_jpeg.py', 'test.py', 'check_number.py', 'getweb.py', 'getweburllib.py', 'printavailable.py']