从文件返回细节,python

2024-01-09

我有这段代码,我正在尝试计算以下内容的数量:

  • .py 脚本中的代码行
  • for_loops(“对于”) -while_loops(“同时”)
  • if_语句(“如果”)
  • 函数定义(“def”)
  • 乘号(“*”
  • 除号(“/”
  • 加号(“+”)
  • 减号(“-”)

在数学符号上,代码可以工作,但是当代码寻找 if 语句时,它返回 2,当有一个时,这是主要问题,但这让我认为我错误地编写了 for 循环,这可能会带来更多问题以后出现问题。除此之外,我不知道如何打印作者行,该行显示为 [] 而不是作者姓名

代码:

from collections import Counter
FOR_=0
WHILE_=0
IF_=0
DEF_=0
x =input("Enter file or directory: ")
print ("Enter file or directory: {0}".format(x))
print ("Filename {0:>20}".format(x))
b= open(x)
c=b.readlines()
d=b.readlines(2)
print ("Author {0:<18}".format(d))
print ("lines_of_code {0:>8}".format((len (c))))
counter = Counter(str(c))
for line in c:
    if  ("for ") in line:
        FOR_+=1
        print ("for_loops {0:>12}".format((FOR_)))
for line in c:
    if  ("while ") in line:
        WHILE_+=1
        print ("while_loops {0:>10}".format((WHILE_)))
for line in c:
    if  ("if ") in line:
        IF_+=1
        a=IF_
        print ("if_statements {0:>8}".format((a)))
for line in c:
    if  ("def ") in line:
        DEF_+=1
        print ("function_definitions {0}".format((DEF_)))
print ("multiplications {0:>6}".format((counter['*'])))
print ("divisions {0:>12}".format((counter['/'])))
print ("additions {0:>12}".format((counter['+'])))
print ("subtractions {0:>9}".format((counter['-'])))

正在读取的文件:

'''Dumbo
Author: Hector McTavish'''
    for for for  # Should count as 1 for statement
while_im_alive # Shouldn't count as a while
while blah # But this one should
  if defined # Should be an if but not a def
  def if # Should be a def but not an if
    x = (2 * 3) + 4 * 2 * 7 / 1 - 2  # Various operators

任何帮助将非常感激


不要将源代码视为字符串,而是使用ast模块来解析它,然后遍历节点:

import ast
from collections import Counter

tree = ast.parse('''
"""
Author: Nobody
"""

def foo(*args, **kwargs):
    for i in range(10):
        if i != 2**2:
            print(i * 2 * 3 * 2)

def bar():
    pass
''')

counts = Counter(node.__class__ for node in ast.walk(tree))

print('The docstring says:', repr(ast.get_docstring(tree)))
print('You have', counts[ast.Mult], 'multiplication signs.')
print('You have', counts[ast.FunctionDef], 'function definitions.')
print('You have', counts[ast.If], 'if statements.')

它非常简单,可以处理所有的极端情况:

The docstring says: 'Author: Nobody'
You have 3 multiplication signs.
You have 2 function definitions.
You have 1 if statements.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从文件返回细节,python 的相关文章

随机推荐

  • React Native - 按按钮时“NativeAnimatedModule.startOperationBatch 不是函数”

    我正在尝试使用 Expo 创建我的第一个 React Native 应用程序 并且我正在尝试通过单击按钮来 console log 随机文本 当按下按钮时 我收到两个错误 这是通过 Android Studio 实现的 1 NativeAn
  • NSDictionary 的合适键

    有没有办法确定一个类是否适合作为键并且将按您的预期工作 例如我想使用NS索引路径作为关键NS词典但我不确定两个是否不同NS索引路径具有相同整数值的实例将始终返回相同的哈希值 苹果的 NSObject 的 isEqual 文档说 如果两个对象
  • 需要 Microsoft Visual C++ 14.0 - 错误 - pip install fbprophet

    我正在尝试 pip install fbprophet 我收到错误 需要 Microsoft Visual C 14 0 它已经被讨论过很多次了 例如需要 Microsoft Visual C 14 0 无法找到 vcvarsall bat
  • 当请求 arrayref 时,perl 中绑定哈希的奇怪行为

    我试图按照跟踪变量使用的顺序绑定一个哈希 或哈希引用 一切都适用于简单的情况 但是当我尝试在一些真实代码上使用我的模块时 我遇到了这个错误 hash or arrayref expected not a simple scalar use
  • 从树数据结构打印纯文本树(java)

    我是以下的超级粉丝 mvn dependency tree 并想要打印一个类似的树作为纯 ascii 文本作为我的 java 程序的输出 com totsp gwt maven gwt sample war 1 0 SNAPSHOT com
  • Puppeteer 一次打开每个文件的 chrome 实例

    我正在尝试自动化一个工作流程 其中我有一个目录中的文件列表 并将它们放入一个数组中 然后 对于数组中的每个文件 我调用一个 Chrome 自动化函数 const path require path const chalk require c
  • Mongoose 模型是另一个模型的 post hook 内的空对象

    我的项目有两个相互引用的模型 当一个模型的实例被删除时 remove 方法将挂钩另一个模型以删除依赖关系 照片 model js const Album require album post hook of photo remove sch
  • 如何使用C#(.Net 3.5)将JavaScript代码发送到IE,运行它,然后从JS代码中获取字符串返回值?

    我们正在开发一个需要与 IE 中的活动文档交互的应用程序 Context 该应用程序是一个 C Net 3 5 桌面应用程序 目标是根据用户请求突出显示网页中的特定文本元素 为此 我们需要检索并解释网页元素 需要返回值 然后通过另一个 JS
  • JS onunload 事件并不总是有效

    我想计算访问者在某个页面上花费的时间并将其存储在我的 MySQL 数据库中 我想在 window onload 上启动一个计时器 如下所示 window onload startCount window onunload sendCount
  • ptrace 在 Linux 中如何工作?

    The ptrace系统调用允许父进程检查附加的子进程 例如 在 Linux 中 strace 这是通过实现ptracesystem call 可以检查子进程调用的系统调用 当附加的子进程调用系统调用时 可以通知 ptracing 父进程
  • 使用 javascript 触发灯箱

    我想使用这个库 http lokeshdhakar com projects lightbox2 http lokeshdhakar com projects lightbox2 我无法附加rel lightbox 每个图像 所以我想使用
  • java 如何使用扫描仪读取段落并计数

    例如 如果文件中有以下几行文本 这是一个例子 这是一个例子 这是一个例子 这是一个例子 这是一个例子 这是一个例子 这是一个例子 这是一个例子 这是一个例子 这是一个例子 这是一个例子 这是一个例子 这是一个例子 这是一个例子 这是一个例子
  • 连接 pandas 中的列表 - 使用 PyCharm 发出警告

    这是一个最小的可重现示例 用于获取我不明白的警告 我的数据框 前 5 行 如下所示 10 列 每列都填充了一个字符串列表 Index HLA A1 D HLA A2 D HLA B1 D HLA B2 D HLA C1 D HLA C2 D
  • 在“获取源”步骤之后,TFS 保持不同步

    We migrated to TFS 2015 RTM recently and were successful in creating build pools configuring build agents and build defi
  • 创建静态库

    我正在尝试创建一个静态库以在我的 PHP 扩展中使用 为此 我正在编译我的 c文件使用gcc c file c o file o并获得 o文件 然后我用ar rcs lib a o将所有编译的对象归档到 a file 完成此操作后 我指的是
  • haskell负十进制数[重复]

    这个问题在这里已经有答案了 可能的重复 Haskell 中的负双精度数或浮点数 macports https stackoverflow com questions 4101599 negative doubles or floats in
  • 表单验证如何排除输入字段?

    我正在关注 bootstrap 4 表单验证https getbootstrap com docs 4 0 components forms validation https getbootstrap com docs 4 0 compon
  • 如何在 Context.MODE_PRIVATE 中创建嵌套文件夹和文件?

    我有一个要求 需要使用嵌套结构编写文件和文件夹Context MODE PRIVATE 我发现我们可以使用创建文件openFileOutput FILENAME Context MODE PRIVATE 并能够使用此方法创建文件 但后来我发
  • 如何从我的应用程序中启动 Mail.app 中的新消息窗口

    我可以使用命令启动 Mail app NSWorkspace共享工作空间 launchApplication Mail app 但我想在 Mail app 中启动新消息窗口 而不是整个 Mail app 我怎样才能这样做呢 我得到了答案 N
  • 从文件返回细节,python

    我有这段代码 我正在尝试计算以下内容的数量 py 脚本中的代码行 for loops 对于 while loops 同时 if 语句 如果 函数定义 def 乘号 除号 加号 减号 在数学符号上 代码可以工作 但是当代码寻找 if 语句时