Pythonでファイルをリストアップする
Pythonで特定のディレクト以下にあるファイルをリストアップします。
目次
os.walkメソッドの使い方
import os
(dirpath, dirnames, filenames) = os.walk(top, [topdown], [onerror], [followlinks])
変数 |
型 |
内容 |
---|---|---|
top |
str |
リストアップするディレクトリのパス。 |
topdown |
bool |
省略可。規定値はTrue。 |
onerror |
省略可。規定値はNone。 |
|
followlinks |
bool |
省略可。規定値はFalse。シンボリックリンクをたどるかどうか。 |
dirpath |
str |
リストアップしたディレクトリのパス。 |
dirnames |
list |
リストアップしたディレクトリに存在するディレクトリのリスト。 |
filenames |
list |
リストアップしたディレクトリに存在するファイルのリスト。 |
walkメソッドの実施例
ちょっと使い方がわかりにくいので、使用例です。
あるディレクトリに対してwalkメソッドの結果を表示します。
import os
for dirpath, dirname, filename in os.walk('c:\\program files\\python37\\tools'):
print(dirpath)
print(dirname)
print(filename)
このコードの実行結果は、このようになります。
c:\program files\python37\tools
['demo', 'i18n', 'parser', 'pynche', 'scripts']
[]
c:\program files\python37\tools\demo
['__pycache__']
['beer.py', 'eiffel.py', 'hanoi.py', 'life.py', 'markov.py', 'mcast.py', 'queens.py', 'redemo.py', 'rpython.py', 'rpythond.py', 'sortvisu.py', 'ss1.py', 'vector.py']
c:\program files\python37\tools\demo\__pycache__
[]
[]
c:\program files\python37\tools\i18n
['__pycache__']
['makelocalealias.py', 'msgfmt.py', 'pygettext.py']
c:\program files\python37\tools\i18n\__pycache__
[]
[]
c:\program files\python37\tools\parser
['__pycache__']
['unparse.py']
c:\program files\python37\tools\parser\__pycache__
[]
[]
c:\program files\python37\tools\pynche
['X', '__pycache__']
['ChipViewer.py', 'ColorDB.py', 'DetailsViewer.py', 'html40colors.txt', 'ListViewer.py', 'Main.py', 'namedcolors.txt', 'pyColorChooser.py', 'pynche.pyw', 'PyncheWidget.py', 'StripViewer.py', 'Switchboard.py', 'TextViewer.py', 'TypeinViewer.py', 'webcolors.txt', 'websafe.txt', '__init__.py']
c:\program files\python37\tools\pynche\X
[]
['rgb.txt', 'xlicense.txt']
c:\program files\python37\tools\pynche\__pycache__
[]
[]
c:\program files\python37\tools\scripts
['__pycache__']
['2to3.py', 'abitype.py', 'analyze_dxp.py', 'byext.py', 'byteyears.py', 'checkpip.py', 'checkpyc.py', 'cleanfuture.py', 'combinerefs.py', 'copytime.py', 'crlf.py', 'db2pickle.py', 'diff.py', 'dutree.py', 'eptags.py', 'find-uname.py', 'finddiv.py', 'findlinksto.py', 'findnocoding.py', 'find_recursionlimit.py', 'fixcid.py', 'fixdiv.py', 'fixheader.py', 'fixnotice.py', 'fixps.py', 'generate_opcode_h.py', 'get-remote-certificate.py', 'google.py', 'gprof2html.py', 'h2py.py', 'highlight.py', 'ifdef.py', 'import_diagnostics.py', 'lfcr.py', 'linktree.py', 'lll.py', 'mailerdaemon.py', 'make_ctype.py', 'md5sum.py', 'mkreal.py', 'ndiff.py', 'nm2def.py', 'objgraph.py', 'parseentities.py', 'parse_html5_entities.py', 'patchcheck.py', 'pathfix.py', 'pdeps.py', 'pickle2db.py', 'pindent.py', 'ptags.py', 'pydoc3.py', 'pysource.py', 'pyvenv.py', 'reindent-rst.py', 'reindent.py', 'rgrep.py', 'run_tests.py', 'serve.py', 'smelly.py', 'suff.py', 'texi2html.py', 'untabify.py', 'update_file.py', 'which.py', 'win_add2path.py']
c:\program files\python37\tools\scripts\__pycache__
[]
[]
最初にディレクトリパスが表示され、その次にそのディレクトリのサブディレクトリのリストが表示され、そしてそのディレクトリのファイルのリストが表示されます。 これが、すべてのサブディレクトリに対して実行されます。
これを使うと、すべてのファイルがリストアップできます。
例えば、次のコードは特定のディレクトリ以下にあるファイルを列挙します。
import os
import os.path
for dirpath, dirname, filename in os.walk('c:\\program files\\python37\\tools'):
for f in filename:
print(os.path.join(dirpath, f))
これを実行すると、こういう結果が得られます。
c:\program files\python37\tools\demo\beer.py
c:\program files\python37\tools\demo\eiffel.py
c:\program files\python37\tools\demo\hanoi.py
c:\program files\python37\tools\demo\life.py
c:\program files\python37\tools\demo\markov.py
c:\program files\python37\tools\demo\mcast.py
c:\program files\python37\tools\demo\queens.py
c:\program files\python37\tools\demo\redemo.py
c:\program files\python37\tools\demo\rpython.py
c:\program files\python37\tools\demo\rpythond.py
c:\program files\python37\tools\demo\sortvisu.py
c:\program files\python37\tools\demo\ss1.py
c:\program files\python37\tools\demo\vector.py
c:\program files\python37\tools\i18n\makelocalealias.py
c:\program files\python37\tools\i18n\msgfmt.py
c:\program files\python37\tools\i18n\pygettext.py
c:\program files\python37\tools\parser\unparse.py
c:\program files\python37\tools\pynche\ChipViewer.py
c:\program files\python37\tools\pynche\ColorDB.py
c:\program files\python37\tools\pynche\DetailsViewer.py
c:\program files\python37\tools\pynche\html40colors.txt
c:\program files\python37\tools\pynche\ListViewer.py
c:\program files\python37\tools\pynche\Main.py
c:\program files\python37\tools\pynche\namedcolors.txt
c:\program files\python37\tools\pynche\pyColorChooser.py
c:\program files\python37\tools\pynche\pynche.pyw
c:\program files\python37\tools\pynche\PyncheWidget.py
c:\program files\python37\tools\pynche\StripViewer.py
c:\program files\python37\tools\pynche\Switchboard.py
c:\program files\python37\tools\pynche\TextViewer.py
c:\program files\python37\tools\pynche\TypeinViewer.py
c:\program files\python37\tools\pynche\webcolors.txt
c:\program files\python37\tools\pynche\websafe.txt
c:\program files\python37\tools\pynche\__init__.py
c:\program files\python37\tools\pynche\X\rgb.txt
c:\program files\python37\tools\pynche\X\xlicense.txt
c:\program files\python37\tools\scripts\2to3.py
c:\program files\python37\tools\scripts\abitype.py
c:\program files\python37\tools\scripts\analyze_dxp.py
c:\program files\python37\tools\scripts\byext.py
c:\program files\python37\tools\scripts\byteyears.py
c:\program files\python37\tools\scripts\checkpip.py
c:\program files\python37\tools\scripts\checkpyc.py
c:\program files\python37\tools\scripts\cleanfuture.py
c:\program files\python37\tools\scripts\combinerefs.py
c:\program files\python37\tools\scripts\copytime.py
c:\program files\python37\tools\scripts\crlf.py
c:\program files\python37\tools\scripts\db2pickle.py
c:\program files\python37\tools\scripts\diff.py
c:\program files\python37\tools\scripts\dutree.py
c:\program files\python37\tools\scripts\eptags.py
c:\program files\python37\tools\scripts\find-uname.py
c:\program files\python37\tools\scripts\finddiv.py
c:\program files\python37\tools\scripts\findlinksto.py
c:\program files\python37\tools\scripts\findnocoding.py
c:\program files\python37\tools\scripts\find_recursionlimit.py
c:\program files\python37\tools\scripts\fixcid.py
c:\program files\python37\tools\scripts\fixdiv.py
c:\program files\python37\tools\scripts\fixheader.py
c:\program files\python37\tools\scripts\fixnotice.py
c:\program files\python37\tools\scripts\fixps.py
c:\program files\python37\tools\scripts\generate_opcode_h.py
c:\program files\python37\tools\scripts\get-remote-certificate.py
c:\program files\python37\tools\scripts\google.py
c:\program files\python37\tools\scripts\gprof2html.py
c:\program files\python37\tools\scripts\h2py.py
c:\program files\python37\tools\scripts\highlight.py
c:\program files\python37\tools\scripts\ifdef.py
c:\program files\python37\tools\scripts\import_diagnostics.py
c:\program files\python37\tools\scripts\lfcr.py
c:\program files\python37\tools\scripts\linktree.py
c:\program files\python37\tools\scripts\lll.py
c:\program files\python37\tools\scripts\mailerdaemon.py
c:\program files\python37\tools\scripts\make_ctype.py
c:\program files\python37\tools\scripts\md5sum.py
c:\program files\python37\tools\scripts\mkreal.py
c:\program files\python37\tools\scripts\ndiff.py
c:\program files\python37\tools\scripts\nm2def.py
c:\program files\python37\tools\scripts\objgraph.py
c:\program files\python37\tools\scripts\parseentities.py
c:\program files\python37\tools\scripts\parse_html5_entities.py
c:\program files\python37\tools\scripts\patchcheck.py
c:\program files\python37\tools\scripts\pathfix.py
c:\program files\python37\tools\scripts\pdeps.py
c:\program files\python37\tools\scripts\pickle2db.py
c:\program files\python37\tools\scripts\pindent.py
c:\program files\python37\tools\scripts\ptags.py
c:\program files\python37\tools\scripts\pydoc3.py
c:\program files\python37\tools\scripts\pysource.py
c:\program files\python37\tools\scripts\pyvenv.py
c:\program files\python37\tools\scripts\reindent-rst.py
c:\program files\python37\tools\scripts\reindent.py
c:\program files\python37\tools\scripts\rgrep.py
c:\program files\python37\tools\scripts\run_tests.py
c:\program files\python37\tools\scripts\serve.py
c:\program files\python37\tools\scripts\smelly.py
c:\program files\python37\tools\scripts\suff.py
c:\program files\python37\tools\scripts\texi2html.py
c:\program files\python37\tools\scripts\untabify.py
c:\program files\python37\tools\scripts\update_file.py
c:\program files\python37\tools\scripts\which.py
c:\program files\python37\tools\scripts\win_add2path.py
いろいろ応用できそうですね。
公開日
広告