Pythonディレクトリの一覧を出力する方法|再帰的に出力する方法も解説

スポンサーリンク

今回は、Pythonのディレクトリリストを実行する方法について見ていきましょう。

これにより、現在の作業場所にあるすべてのファイルとディレクトリをリストアップすることができます。

Pythonを使用して、ファイル名を見て情報を得たいと思うことはよくあります。

では、それを素早く簡単に行う方法を見てみましょう。

スポンサーリンク

1. os.listdir() を使った Python ディレクトリのリストアップ

これはカレントディレクトリから Python のディレクトリリストを作成するための簡単なメソッドです。

本当に1行だけです。

信じられませんか?ここに例があります。

これは Windows / Linux / MacOS のどのオペレーティングシステムにも当てはまります。

import os
 
print(os.listdir())

出力例

>>> import os
>>> os.listdir()
['.bashrc', '.git', '.nvimrc', '.vimrc', '.xinitrc', '.zshrc', 'Autumn.jpg', 'README.md', 'config']

これは、カレント・ディレクトリにあるすべてのファイルとネストされたフォルダーのリストを返します。

正確なパスを指定したい場合は、os.listdir(path)の引数としてパスを渡せばよいでしょう。

>>> os.listdir(r'/home/vijay/manjaro-dotfiles')
['.bashrc', '.git', '.nvimrc', '.vimrc', '.xinitrc', '.zshrc', 'Autumn.jpg', 'README.md', 'config']

Windowsのパスの場合)バックスラッシュをエスケープする必要がないので、パスを扱うときには生の文字列(接頭辞が r の文字列)を使ってください。

2. os.listdir() と共に os.path.join() を使用する

もし、カレントディレクトリにあるすべてのファイルの絶対パスを表示したければ、 os.listdir() 関数に os.path.join() を追加するだけです!

このために、単純にフルパスを取得して、そのような名前のリストを返す関数を作っておきます。

import os
 
def list_full_paths(directory):
    return [os.path.join(directory, file) for file in os.listdir(directory)]
 
print(list_full_paths(r'/home/accornition/manjaro-dotfiles'))

結果は以下の通りです。

['/home/vijay/manjaro-dotfiles/.bashrc', '/home/vijay/manjaro-dotfiles/.git', '/home/vijay/manjaro-dotfiles/.nvimrc' , '/home/vijay/manjaro-dotfiles/.vimrc', '/home/vijay/manjaro-dotfiles/.xinitrc', '/home/vijay/manjaro-dotfiles/.zsh    rc', '/home/vijay/manjaro-dotfiles/Autumn.jpg', '/home/vijay/manjaro-dotfiles/README.md', '/home/vijay/manjaro-dotfiles/config']

確かに、これはルートディレクトリからの絶対パスを与えてくれます!

3.Python os.walk()を使ったディレクトリのリストアップ

os.walk()`関数を使ってディレクトリツリーを走査することもできます。

そして、ディレクトリとファイルを個別に表示することができます。

for top, dirs, files in os.walk(os.getcwd()):
    print("Printing directories...")
    for dir in dirs:
        print(os.path.join(top, dir))
    print("Printing files....")
    for file in files:
        print(os.path.join(top, file))

結果は以下の通りです。

Printing directories...
/home/vijay/manjaro-dotfiles/config/cmus                                                                            /home/vijay/manjaro-dotfiles/config/compton                                                                         /home/vijay/manjaro-dotfiles/config/termite                                                                           Printing files....
Printing directories...
Printing files....                                                                                                   /home/vijay/manjaro-dotfiles/config/cmus/my.theme                                                                    Printing directories...
Printing files....
/home/vijay/manjaro-dotfiles/config/compton/compton.conf                                                             Printing directories...
Printing files....
/home/vijay/manjaro-dotfiles/config/termite/config

上記の3つの方法は、使用するシナリオによって使い分けることができます。

最初の方法が最も簡単でお勧めですが、フルパスが必要で、再帰的に移動したい場合は os.walk() を使ってください。

まとめ

今回は、Pythonでファイルやディレクトリをリストアップする方法を、さまざまな方法を使って学びました。

参考文献

  • ディレクトリからのコンテンツリストに関する StackOverflow の質問
タイトルとURLをコピーしました