Python 在bash中获取目录

Python 在bash中获取目录,python,bash,Python,Bash,我有一个有很多文件夹的文件夹,在这些文件夹中有更多的文件夹等等。 在这棵树的某个地方有文件和文本文件。其中一个文件包含“查找我”。我需要找到那个文件的路径。在bash和python中,每种语言对应一个代码 当然,我不想让你帮我解决这个问题,所以我有一些问题所有的问题都是关于这两种语言的: 如何浏览某个目录中的所有文件和目录? 如果我有一个文件/目录路径,我如何判断该路径是用于文件还是用于目录? 仅对于bash,如何读取文件内容并检查其中是否包含find me? 请随时尝试grep: grep -

我有一个有很多文件夹的文件夹,在这些文件夹中有更多的文件夹等等。 在这棵树的某个地方有文件和文本文件。其中一个文件包含“查找我”。我需要找到那个文件的路径。在bash和python中,每种语言对应一个代码

当然,我不想让你帮我解决这个问题,所以我有一些问题所有的问题都是关于这两种语言的:

如何浏览某个目录中的所有文件和目录? 如果我有一个文件/目录路径,我如何判断该路径是用于文件还是用于目录? 仅对于bash,如何读取文件内容并检查其中是否包含find me? 请随时尝试grep:

grep -r "find me" .


我认为这个函数将解决Python的问题1和问题2。我不知道巴什。它将分别为您提供所有目录和文件的完整列表,以及两者结合的完整路径。你可以尝试一下,并根据自己的喜好修改它。然后你需要阅读你找到的所有文件并寻找我

import os

def find_paths(path):
    dir_names = []
    file_names = []
    path_names = []
    for dirname, dirnames, filenames in os.walk(path):
        for filename in filenames:
            # Combine dirname and filename into absolute path:
            filepath = os.path.join(dirname, filename)
            # Add info to lists:
            dir_names.append(dirname)
            file_names.append(filename)
            path_names.append(filepath)
    return dir_names, file_names, path_names

print find_paths(".") # Finds all dirs, files and paths in current folder.

请了解bash中的grep命令。它可以解决您的问题,如果您不知道如何检查文件或目录,您还需要学习bash的基础知识。1查找-帮助2是3 cat/path/to/filePython:1&2 os.walk或os.listdir 3在openfname.readin中查找我2我的意思是,如果文件在bash中包含find meFor 2,我如何和在3中如何通过代码进行检查,请参见bash手册页中的条件表达式一节。对于Python,请参阅os.path模块的文档。这就是@PM2Ring。它是这样的,因为我最初做这个函数时只需要完整的路径。要删除重复项,您可以查看以下问题:。我不知道这是否是最优雅的解决方案,但我可以找到一个适用于所有操作系统的解决方案。我想这3个同步列表可能很方便。但这似乎是在浪费空间,因为您可以只构建路径名并在需要时使用os.path.split提取路径basename。
import os

def find_paths(path):
    dir_names = []
    file_names = []
    path_names = []
    for dirname, dirnames, filenames in os.walk(path):
        for filename in filenames:
            # Combine dirname and filename into absolute path:
            filepath = os.path.join(dirname, filename)
            # Add info to lists:
            dir_names.append(dirname)
            file_names.append(filename)
            path_names.append(filepath)
    return dir_names, file_names, path_names

print find_paths(".") # Finds all dirs, files and paths in current folder.