今回は、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 の文字列)を使ってください。
この記事もチェック:Pythonのmapメソッドの使い方|ラムダ関数や引数が複数の場合の使い方も解説
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 の質問