Pythonでディレクトリ内のファイルの一覧を取得する
Pythonでディレクトリ内のファイルの一覧を取得してみます。
目次
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
読み込めましたね。
公開日
広告