テキスト値の検索中にディレクトリとサブディレクトリをトラバースするコードを持っている人はいますか? 次に、見つかったらPythonで値を返しますか?
質問する
112 次
3 に答える
1
まず、os.walk()
指定されたディレクトリ ツリーをトラバースする Python ジェネレータを返します。ツリーで検出されたディレクトリごとに、ジェネレータは の 3 タプルを返します(dirpath, dirnames, filenames)
。os.walk()
ループ内で使用する必要があります
次に、組み込みopen()
関数を使用してfile
、ファイルの内容を読み取ることができるオブジェクトを返します。read()
ファイルの内容全体を読み取りますが、readlines()
一度に 1 行ずつ読み取ります。
一度に 1 行ずつファイルを処理しても安全であるように、探しているテキストが複数行にまたがることはできないと仮定すると、次の行に沿って何かを行うことができます。
import os
import re
matching_files = []
root = "/path/to/root/folder/you/want/to/walk"
# Navigate the directory structure starting at root
for root, dirs, files in os.walk(root):
# For each file in the current directory
for file_name in files:
# Reconstruct the full path
file_path = os.path.join(root, file_name)
# Open the file
with open(file_path, 'r') as f:
# Read the file one line at a time
for line in f.readlines():
# Look for your text in the current line
if re.findall(r'text_you_are_searching_for', line):
matching_files.append(file_path)
詳細については、オンライン ドキュメントを参照してください。
- os.walk
- Pythonファイル オブジェクト
- Python での正規表現
于 2012-06-20T13:58:55.117 に答える
1
のドキュメントを読んでos.walk()
試してみて、うまくいかない場合は戻ってきてください。
于 2012-06-20T13:59:32.063 に答える
0
独自の grep を実装するにはos.walk()
、いくつかの基本的なファイル I/O を使用できます。コードを作成する前に、具体的に何が必要なのかについて、より多くの情報が必要です。
于 2012-06-20T14:12:26.517 に答える