[解決済み] glob()を使って再帰的にファイルを検索するには?
2022-03-18 16:08:12
質問
これは私が持っているものです。
glob(os.path.join('src','*.c'))
が、srcのサブフォルダを検索したいのです。こんな感じでいいんじゃないでしょうか。
glob(os.path.join('src','*.c'))
glob(os.path.join('src','*','*.c'))
glob(os.path.join('src','*','*','*.c'))
glob(os.path.join('src','*','*','*','*.c'))
しかし、これでは明らかに限界があり、不格好です。
解決方法は?
pathlib.Path.rglob
使用方法
pathlib.Path.rglob
から
pathlib
モジュールは、Python 3.5で導入されました。
from pathlib import Path
for path in Path('src').rglob('*.c'):
print(path.name)
pathlib を使いたくない場合は、以下のようにします。
glob.glob('**/*.c')
を渡すことを忘れないでください。
recursive
キーワードパラメータを使用すると、大規模なディレクトリで膨大な時間を消費します。
ドットで始まるファイルにマッチする場合 (
.
) のような、カレントディレクトリにあるファイルや、Unix ベースのシステムでの隠しファイルには
os.walk
の解決策を以下に示します。
os.walk
古いバージョンのPythonでは
os.walk
でディレクトリを再帰的に走査し
fnmatch.filter
という単純な式でマッチングします。
import fnmatch
import os
matches = []
for root, dirnames, filenames in os.walk('src'):
for filename in fnmatch.filter(filenames, '*.c'):
matches.append(os.path.join(root, filename))
関連
-
[解決済み】Python - "ValueError: not enough values to unpack (expected 2, got 1)" の修正方法 [閉店].
-
[解決済み] 複数の例外を1行でキャッチする(ブロックを除く)
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] バイトを文字列に変換する
-
[解決済み] リストを均等な大きさの塊に分割するには?
-
[解決済み] インデックスを指定してリストから要素を削除する方法
-
[解決済み] 文字列が数値(float)であるかどうかを確認するにはどうすればよいですか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
python call matlab メソッドの詳細
-
Python カメの描画コマンドとその例
-
PythonはWordの読み書きの変更操作を実装している
-
PyQt5はユーザーログインGUIインターフェースとログイン後のジャンプを実装しています。
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
[解決済み】RuntimeWarning: invalid value encountered in double_scalars で numpy の除算ができない。
-
[解決済み】TypeError: 系列を <class 'float'> に変換することができません。
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない
-
[解決済み] glob.globモジュールでサブフォルダを検索するには?重複