\

Pythonのglobモジュールは、Unixシェルのルールに基づいて指定されたパターンに一致するすべてのパス名を見つけますが、結果は任意の順序で返されます。しかし、ファイルのリストを特定の順序で取得したい場合があります。そのような場合には、glob.glob()の結果をソートする方法があります。

例えば、次のようなコードがあります:

import os, glob
path = '/home/my/path'
for infile in glob.glob( os.path.join(path, '*.png') ):
    print(infile)

このコードは、指定したパス内のすべての.pngファイルを見つけて表示します。しかし、表示されるファイルの順序は保証されません。

ファイルを特定の順序で取得するには、sorted()関数を使用します。sorted()関数は、リストの要素をソートした新しいリストを返します。この関数にはkey引数があり、これを使用してソートの基準を指定することができます。

さらに、自然な順序(例えば、['1', '2', '10']ではなく['1', '10', '2'])でソートしたい場合は、natsortライブラリを使用すると便利です。

import glob
from natsort import natsorted
filepath = 'data/'
filelist = glob.glob(filepath + '*.wav')
new_filelist = natsorted(filelist)

このコードは、glob.glob()で取得したファイルリストを自然な順序でソートします。

以上のように、Pythonのglobモジュールと組み込み関数sorted()、またはnatsortライブラリを使用することで、ファイルのリストを任意の順序で取得することができます。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です