Pythonでファイルを順番ずつに取得する方法【os, natsort】

Python
スポンサーリンク
taniten
taniten

今回はPythonでフォルダ内のファイルを通し番号順に取得する方法を解説するよ!

ライブラリを使ったりするのかな?

ふうた君
ふうた君
taniten
taniten

今回使うライブラリは「os」と「natsort」だよ!

スポンサーリンク

natsortのインストール

今回使用するライブラリは「os」と「natsort」の2つです。

osライブラリはPythonの標準ライブラリなので,別途インストールしなくてもそのまま使用することができます。

しかしnatsortライブラリはインストールする必要があるので,pipを使って先にインストールしておきましょう。

以下のコマンドをターミナルで実行してください。

pip install natsort

フォルダ内のファイルを通し番号順に取得

ファイルをつくる

デスクトップに次のような「test」フォルダを作成しました。

5つのファイルを作成し,それぞれの名前に「001」のような通し番号をつけています。

os.listdir()でフォルダ内のファイルを取得

以下のようなプログラムを作成します。

#ライブラリのインポート
import os

#フォルダの場所を指定(ここは僕のPCの例です)
path = '/Users/ユーザー名/Desktop/test/'

#指定先にあるファイルを取得してリストに格納
FILE = [i for i in os.listdir(path)]
print(FILE)

ここで9行目に出てくる「os.listdir()」は引数に指定したフォルダ内のファイルを取得できるものです。

これを実行すると,今回は以下のような出力結果がでました。

❯❯❯ py test.py
['001_test.txt', '003_test.txt', '002_test.txt', '004_test.txt', '005_test.txt']

ファイルを取得することはできましたが,os.listdir()はファイルをランダムに取得するのでこのままでは通し番号順になっておらず,不便ですね。

natsortで通し番号順に取得

先ほどインストールしたnatsortライブラリの「natsorted()」を使えば,リスト内のファイルを自然な順番にソートしてくれます。

先ほどのファイルを以下のように書き換えてみましょう。

#ライブラリのインポート
import os
from natsort import natsorted 

#フォルダの場所を指定(ここは僕のPCの例です)
path = '/Users/ユーザー名/Desktop/test/'

#指定先にあるファイルを取得してリストに格納(FILE)
#通し番号順にソートして新しいリストに格納(FILE_sort)
FILE = [i for i in os.listdir(path)]
FILE_sort = natsorted(FILE)
print(FILE_sort)

natsorted()で自然な順番になったリストを,新しいFILE_sortというリストに格納しています。

これを実行すると,以下のように出力されます。

❯❯❯ py test.py
['001_test.txt', '002_test.txt', '003_test.txt', '004_test.txt', '005_test.txt']

先ほどと異なり,しっかり通し番号順に格納されていることがわかります。

こうすれば何かと便利だね!

ふうた君
ふうた君
taniten
taniten

参考にしてみてね!

コメント

タイトルとURLをコピーしました