Pythonでディレクトリ内のファイルの一覧を取得する

Pythonでディレクトリ内のファイルの一覧を取得してみます。

目次

  1. osモジュールのscandirメソッドで一覧を取得
  2. ファイルの一覧を取得してみる
  3. ディレクトリの一覧を取得してみる
  4. ディレクトリ内の要素の一覧をリストにしてみる

osモジュールのscandirメソッドで一覧を取得

osモジュールのscandirメソッドを使うと、ディレクトリ内の要素とその属性をまとめて取得できます。

iterator = os.scandir(path)

変数

内容

path

検索するパス。既定値は . (カレントディレクトリ)

iterator

DirEntryオブジェクトのイテレータ

ファイルの一覧を取得してみる

こういうファイル構成のディレクトリがあったとします。

C:.
│  1st.txt
│  2nd.txt
│  2nd.txt - ショートカット.lnk
│  3rd.md
│  4th.rst
│  zipped.zip

└─subdir

ファイルの一覧を取得してみます。

>>> import os

>>> with os.scandir('.') as it:
...     for entry in it:
...         if entry.is_file():
...             print(entry.name)
...
1st.txt
2nd.txt
2nd.txt - ショートカット.lnk
3rd.md
4th.rst
zipped.zip

ディレクトリは省かれましたが、ショートカットがファイルに含まれました。

シンボリックリンクを省いてみます。

>>> import os

>>> with os.scandir('.') as it:
...     for entry in it:
...         if entry.is_file() and (not entry.is_symlink()):
...             print(entry.name)
...
1st.txt
2nd.txt
2nd.txt - ショートカット.lnk
3rd.md
4th.rst
zipped.zip

ショートカットとシンボリックリンクは別物なんですね。

シンボリックリンクは拡張子がlnkのファイルですので、名前がlnkで終わるファイルを除去してみます。

>>> import os

>>> with os.scandir('.') as it:
...     for entry in it:
...         if entry.is_file() and (not entry.name.endswith('lnk')):
...             print(entry.name)
...
1st.txt
2nd.txt
3rd.md
4th.rst
zipped.zip

ショートカットを除くファイルの一覧が取得できました。

ディレクトリの一覧を取得してみる

ディレクトリの一覧を取得してみます。

>>> import os

>>> with os.scandir('.') as it:
...     for entry in it:
...         if entry.is_dir():
...             print(entry.name)
...
subdir

ディレクトリ内の要素の一覧をリストにしてみる

内包表記を使って、要素の一覧をリストオブジェクトにしてみます。

>>> import os

>>> F = [i for i in os.scandir()]
>>> F
[<DirEntry '1st.txt'>, <DirEntry '2nd.txt'>, <DirEntry '2nd.txt - ショートカット.lnk'>, <DirEntry '3rd.md'>, <DirEntry '4th.rst'>, <DirEntry 'subdir'>, <DirEntry 'zipped.zip'>]

>>> F[0]
<DirEntry '1st.txt'>
>>> F[0].name
'1st.txt'
>>> F[0].path
'.\\1st.txt'
>>> F[0].is_dir()
False
>>> F[0].is_file()
True

>>> F[5].name
'subdir'
>>> F[5].path
'.\\subdir'
>>> F[5].is_dir()
True
>>> F[5].is_file()
False

読み込めましたね。

公開日

広告