LoginSignup
0
1

More than 1 year has passed since last update.

Pythonのos.listdirを使ってフォルダ内のファイルリストを取得する

Posted at

今回はglobではなくos.listdirでファイルリストを取得する方法を紹介します。
最後にも紹介しますが、この関数とwxPythonを組み合わせてファイルマネージャーをつくることができます。
https://programming-self-study.blogspot.com/2021/06/wxpython-filem.html

コード

sample.py
import os
filelist = os.listdir("C:\\Users\\")
for file in filelist:
    print(file)
#.NET v2.0
#.NET v2.0 Classic
#.NET v4.5
#.NET v4.5 Classic
#All Users
#Classic .NET AppPool
#Default
#Default User
#DefaultAppPool
#desktop.ini
#...

こんな感じで取得します。

globとの違い

まず、globはC:\\Users\\*.txtのように拡張子などをを指定してできます。
が、別のことも調べていきましょう、

出力内容の違い

os.listdir

.NET v2.0
.NET v2.0 Classic
.NET v4.5
.NET v4.5 Classic
All Users
Classic .NET AppPool
Default
Default User
DefaultAppPool
desktop.ini
...

ファイル名のみを出力しています。

glob

C:\Users\All Users
C:\Users\Classic .NET AppPool
C:\Users\Default
C:\Users\Default User
C:\Users\DefaultAppPool
C:\Users\desktop.ini
...

パス全体を出力しています。あとなんか.NETなどのフォルダが表示されていません。

速度の違い

比較に利用したコードはこんな感じです。

hikaku.py
import glob
import os
import time

#glob

s = time.time()
filelist = glob.glob("C:\\Windows\\System32\\*")
print(time.time()-s)

#listdir

s = time.time()
filelist = os.listdir("C:\\Windows\\System32\\")
print(time.time()-s)

glob

0.04687190055847168

listdir

0.0

あくまでも自分の環境で実行した場合です。
実行すると、その都度速度が変わりますが、listdirのほうがほんの少しはやいのがわかります。

おわりに

あえてblogではなくlistdirを使わなければいけないというわけではありませんでした。

これらの関数とwxPythonを組み合わせてファイルマネージャーをつくってみました。
https://programming-self-study.blogspot.com/2021/06/wxpython-filem.html

↑の記事はファイルリスト取得してListCtrlに反映、あとはリストクリック時の設定をするだけのシンプルなものです。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1