Pythonでファイルをリストアップする

Pythonで特定のディレクト以下にあるファイルをリストアップします。

目次

  1. os.walkメソッドの使い方
  2. walkメソッドの実施例

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

いろいろ応用できそうですね。

公開日

広告