Python:有没有办法过滤 c++ 文件?

Posted

技术标签:

【中文标题】Python:有没有办法过滤 c++ 文件?【英文标题】:Python: Is there a way to filter through c++ files? 【发布时间】:2020-07-20 23:05:51 【问题描述】:

我目前正在编写一个 python 脚本,该脚本在公司代码库中进行搜索,以生成大量 .cpp.hppfiles 列表。其中一些文件仅包含 cmets 和预处理器指令。有没有办法识别和过滤掉这些文件?谢谢

【问题讨论】:

请从intro tour 重复[关于主题](***.com/help/on-topic) 和[如何提问](***.com/help/how-to-ask)。 “这可以做到吗”是一个简单的是/否问题,通常是“是”,因为这是一台通用计算机。隐含的问题,“我该怎么做?”对于 Stack Overflow 来说太宽泛了。 【参考方案1】:

你必须阅读文件的内容

f = open("path/to/file")
contents = f.read()
f.close()

希望这些文件包含某种标记,使它们易于查找 - 标题中的某些内容。

if "indicative marker" in contents:
    # Label file

由于它们只是 cmets 和预处理器指令,您可能还需要逐行迭代,检查每个开头的“//”或“#”。

for line in f:
    if "//" not in line or "#" not in line:
        return False

当然,要做到这一点,您需要获取每个目录的内容列表。

import os
os.listdir("path/to/dir")

假设这些文件是嵌套的,您需要在此处导航结果。如果文件的命名方式易于识别,则实际上可以跳过读取文件内容的步骤。

【讨论】:

谢谢你,这正是我想要的! @eric 我正在做类似的事情,如果也不需要命名空间声明,你可以做类似的事情: if "//" in line 或 "#" in line: return false elif行中的“命名空间”和不在行中的“使用”:返回 false 。抱歉,这没有按照我的意图格式化 @jstrau21 是的,我会声明一个包含您要搜索的所有内容的数组,然后使用“for line in file: for each in array_of_undesirables: return False if each in line”。将其视为注释有点困难,但在每个 : 之后添加一个新行并确保第二个 for 循环嵌套在第一个中。

以上是关于Python:有没有办法过滤 c++ 文件?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法使用 SWIG C++ 创建一个 python 模块,可以在 Python2 和 Python3 中导入

有没有办法在条件下使用多种数据类型过滤Python中的列?

有没有办法通过 C++ 中的 OUT 参数接收 Python 中的返回值?

如何使用 c++ 代码调用和运行一个已存在的 python 文件?

有没有办法知道在tensorflow中调用了哪个c++核心函数?

Python过滤敏感词汇