PyCharm - 如何自动将项目中的所有标识符重命名为snake_case?

2024-04-22

我有一个相当大的 Python 项目(略多于 3000 行),不幸的是,语法不尊重现在需要的 PEP8。我正在特别寻找重命名所有函数的方法camelCase风格为snake_case style.

到目前为止我只发现这个答案 https://intellij-support.jetbrains.com/hc/en-us/community/posts/206174959-Code-formatting-replacing-with-camelCase-everywhere,它拒绝在 PyCharm 中自动重命名所有变量的可能性,并建议手动执行此操作,我不想这样做,因为代码中有数千个变量。

那么,有没有一种方法,如何根据上述规则自动重命名所有变量呢?

我对函数/正则表达式不感兴趣,它们只对一个字符串执行此操作,我真的只对“集体”解决方案感兴趣。


你可以试试骆驼蛇 pep8 https://github.com/abarker/camel-snake-pep8,根据官方描述:

一个重构工具,帮助将camel case转换为snake case以及副例 在 Python 程序中也是如此,符合 PEP-8 风格指南。 它使用/滥用 Python-Rope 来查找并执行更改。这 程序以交互方式显示建议的更改并询问用户 是否接受变更。

要安装,请运行以下命令:

$ <activate your virtual environment>
$ pip install rope colorama
$ wget https://raw.githubusercontent.com/abarker/camel-snake-pep8/master/src/camel_snake_pep8/camel_snake_pep8.py

之后,转到项目的文件夹并运行以下命令:

$ python2 camel_snake_pep8.py . *.py

该程序可用于重构 Python 2 或 Python 3 代码但它必须使用Python 2运行。这是因为,截至 2017 年 3 月,Python-Rope 仅支持 Python 2(据说 Python 3 版本正在开发中)。 有时这不起作用,因为 python 3 的特定语法,例如:

def pick(l: list, index: int) -> int:
    return l[index]

在这种情况下,您必须使此类表达式的语法与 python2 兼容。请投票/帮助绳索项目issue https://github.com/python-rope/rope/issues/57支持python3。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PyCharm - 如何自动将项目中的所有标识符重命名为snake_case? 的相关文章

随机推荐

  • Pycharm交互式控制台不起作用

    我对 python 和 Pycharm 都很陌生 因此 请毫不犹豫地指出我哪里做错了以及如何解决问题 问题是IPython无法像往常一样导入我想要执行的函数 即使 python 文件运行后 我也无法在 IPython 控制台中导入该文件中的
  • 我收到内存异常“System.IO.out of exception”错误

    对于小目录大小 代码工作正常 当目录文件大小很大时 它会给出此错误消息 我的代码 IEnumerable
  • 首选项列表仅显示第一个元素

    我正在开发一个PreferenceActivity与定制Preference意见 我的问题是我创建了一个视图ListView它只显示第一个元素 我发布我的代码和图像 http imageshack us photo my images 54
  • 大括号 {} 替换 Racket 中的“开始”

    是否可以有一个宏 使用大括号 来表示一个语句块 从而替换 begin 关键字 因此 代替 if condition begin statement1 statement2 statement3 statement4 else stateme
  • 协议类型的 inout 变量是否被禁止?

    下面的代码 protocol SomeProtocol class SomeClass SomeProtocol private func doSomethingWith inout someVar SomeProtocol private
  • 同步ScrollView滚动位置 - android

    我的 android 布局中有 2 个 ScrollView 如何同步它们的滚动位置 ScrollView中有一个方法 protected void onScrollChanged int x int y int oldx int oldy
  • 什么是 MVC 框架以及为什么它是必要/有用的?

    我知道 MVC 框架允许您分离业务逻辑 数据库访问和表示 但为什么我们需要一个框架来做到这一点 我们不能将我们的类分开 也许对模型 视图和控制器类使用不同的包 文件夹吗 在我看来 你所说的是 MVC 模式 而不是特定的框架 当然 您可以将所
  • 修复文件“project.pch”已被修改,因为预编译头在 Xcode 中构建错误

    我最近在 info plist 部分中处理我的应用程序 因为我的应用程序将无法在我的测试设备上运行 自构建预编译头以来 文件 project pch 已被修改 需要注意的是 该应用程序在模拟器中运行良好 编辑 现在我收到此错误而不是另一个错
  • 为什么我的自定义图形项目在基于 Qt 的 C++ GUI 应用程序中不断重新绘制?

    我的应用程序有一个 QMdiArea 其中显示子窗口 其中包含 QGraphicsView 派生视图 GfxInteractiveView 的实例 这些视图又可视化包含自定义 QGraphicsItem 派生项目的场景 An image i
  • vim 中更有用的状态栏? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Python Dask - 2 个 DataFrame 的垂直串联

    我正在尝试垂直连接两个 Dask DataFrame 我有以下 Dask DataFrame d A B C D E F 1 4 8 1 3 5 6 6 2 2 0 0 9 4 5 0 6 35 0 1 7 10 9 4 0 7 2 6 1
  • Angular Digest 循环正在运行,但 ng-bind 值未更新

    我有一个包含导航栏的父视图 在该视图内部我有一个 div 渲染我所在的任何子视图的元素 我想根据子视图的路线有条件地显示 隐藏父视图中的导航栏 现在 我有这个 div
  • 在 gdb 中设置应用程序关联

    有没有一种简单的方法可以设置我正在调试的应用程序的亲和力 而无需将 gdb 锁定到同一核心 我问的原因是应用程序以实时优先级运行 并且需要在单核上运行 目前我使用这个命令行 taskset c 3 gdbserver 1234 app ou
  • AngularJS 中的 jQuery .one() 相当于什么?

    如何创建一个仅触发一次并在之后自毁的事件发射器 相当于 jQuery 的 one 函数 实际上 您可以通过 jqLit e 库在 AngularJS 中使用 one jsLite 是 jQuery 的精简版本 是支持 Angular 所需的
  • 最好的文档类型是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 更新 KB 2687323 后,VB6 IDE 无法加载 MSCOMCTL.OCX

    Windows 更新安装安全更新后KB2687323 http support microsoft com kb 2687323 我的 VB6 项目无法加载 显示的错误消息是 无法加载 project vbp path MSCOMCTL O
  • 向 ElasticSearch 术语聚合添加其他字段

    索引文档如下 id 1 title Blah platform id 84 url http facebook com title Facebook 我想要的是按平台计数和输出统计数据 为了计数 我可以使用术语聚合platform id作为
  • Eclipse 3.7 的 JProbe 插件

    如何将 jprobe 插件添加到 Eclipse 3 7 中 我还下载了 Quest Eclipse Plug in 901 但不知道现在该怎么办 Maybe or JProbe Eclipse 插件安装 http www quest co
  • 在网页上获取 POST 答案的 cUrl 替代方案

    我想获取特定表单提交的结果网页 此表单使用 POST 因此我当前的目标是能够将 POST 数据发送到 url 并在变量中获取结果的 HTML 内容 我的问题是我无法使用 cUrl 未启用 这就是为什么我要求您了解是否可以使用其他解决方案 提
  • PyCharm - 如何自动将项目中的所有标识符重命名为snake_case?

    我有一个相当大的 Python 项目 略多于 3000 行 不幸的是 语法不尊重现在需要的 PEP8 我正在特别寻找重命名所有函数的方法camelCase风格为snake case style 到目前为止我只发现这个答案 https int