0

有没有人有代码在搜索文本值时遍历目录和子目录?然后一旦找到返回python中的值?

4

3 回答 3

1

首先,os.walk()返回一个遍历给定目录树的 Python 生成器。对于树中遇到的每个目录,生成器返回一个 3 元组(dirpath, dirnames, filenames)。您将需要os.walk()在循环中使用

然后,内置open()函数用于返回一个file对象,您可以从中读取文件的内容。read()将读取文件的全部内容,而readlines()一次读取一行。

假设您要查找的文本不能位于多行上,以便一次处理一行文件是安全的,您可以按照以下方式执行操作:

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)

您可以在有关的在线文档中获取更多详细信息

于 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 回答