如何在Python中获取当前脚本的代码?

2023-11-22

我想将当前脚本作为 Python 变量中的字符串获取。

我发现了两种次优的方法,但我希望有更好的解决方案。我发现:

  1. The inspect导入有一个getsource方法,但只返回一个函数(或类或其他)的代码,而不是整个脚本。我找不到将整个脚本的对象传递给的方法getsource.

  2. 我可以使用找到脚本文件的文件位置__file__ or sys.argv[0] and open它来阅读。但这对我来说似乎太间接了。

那么:有没有一种(更好的)方法来以字符串形式访问整个脚本?

如果相关:我更喜欢 Python 2.7 解决方案而不是 3.x。


Try:

import inspect
import sys

print inspect.getsource(sys.modules[__name__])

Or even:

import inspect
import sys

lines = inspect.getsourcelines(sys.modules[__name__])[0]

for index, line in enumerate(lines):
    print "{:4d} {}".format(index + 1, line)

包含代码的文件被认为是一个Python“模块”,并且sys.modules[__name__]返回对此模块的引用。

Edit

或者甚至,如@ilent2建议,像这样,而不需要sys module:

import inspect

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

如何在Python中获取当前脚本的代码? 的相关文章

随机推荐

  • Pygame 导致 FPS 低的原因。如何提高性能?

    我正在使用 pygame 处理一些射弹 发现即使只有 200 行代码 游戏的运行速度也低于 50 fps 除了运行循环之外 没有大循环 而且我的电脑相当新 那么 这是因为 pygame 使用 SDL 吗 如果是这样 使用像 OpenGL 这
  • 如何设置savon默认超时值

    我正在使用 savon 进行一些 api 调用 但它需要很长时间才能响应 因为我收到超时错误 所以有什么方法可以更改超时的默认值 我正在使用 savon 0 7 9 ruby 1 8 7 和rails v 2 3 2 Savon 使用 ge
  • 基类和继承中的静态方法中的静态变量

    我有这些 C 类 class Base protected static int method static int x 0 return x class A public Base class B public Base 会不会x静态变量
  • 当数据源为 Linq 时访问 ItemDataBound 事件中的列

    我使用以下代码设置数据源 protected void Page Load object sender EventArgs e var vacancies from v in db Vacancies join c in db Custom
  • 避免传递数据框的最佳方法是什么?

    我有12个data frame一起工作 它们是相似的 我必须对每一个进行相同的处理 所以我编写了一个函数 它需要一个data frame 处理它 然后返回一个data frame 这有效 但我担心我正在绕过一个非常大的结构 我可能正在制作临
  • 如何使用正则表达式分割字符串

    我想将一个字符串拆分为列表或数组 Input green yellow green white orange blue black 分割字符是逗号 但它必须忽略引号内的逗号 输出应该是 green 黄绿色 white orange 蓝黑 T
  • mvc.net验证是否支持ValidationGroup的概念

    来自 asp net 的背景 在向页面添加验证时 我非常欣赏 validationGroup 的概念 我一直在 mvc net 中寻找相应的概念 但运气不佳 这个概念在 mvc net 中可用吗 如果没有 我还有什么选择 不幸的是 它没有附
  • 有人有渲染 HTML 的 diff 算法吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我有兴趣看到一个好的 diff 算法 可能是用 Javascript 编写的 用于渲染两个 HTML 页面的并排差异 这个想法是 diff 将显示差
  • 生命周期和对包含引用的对象的引用

    假设我有一个包含引用的结构 以及另一个包含对该结构的引用的结构 如下所示 struct Image lt a gt pixel data a mut Vec
  • 运行 Android 测试会产生“未知的命令行选项‘--tests’”

    我需要使用命令行在快速文件中的应用程序的特定包中使用 Gradle 运行测试 我正在使用这个命令 sh gradlew test tests com package exemple 但它给了我这个错误 从命令行配置任务 app test 时
  • 关闭 ContentProvider 中的数据库

    本周我学习了有关 ContentProvider 的所有内容 并使用 SQLiteOpenHelper 类来管理提供程序内部数据库的创建和升级 具体来说 我一直在阅读 sdk 示例目录中的 NotePad 示例 现在 我可以看到 SQLit
  • 非常快的文本文件处理(C++)

    我编写了一个在 GPU 上处理数据的应用程序 代码运行良好 但我遇到的问题是输入文件的读取部分 3GB 文本 是我的应用程序的瓶颈 从HDD读取速度快 但逐行处理速度慢 我使用 getline 读取一行并将第 1 行复制到向量 将第 2 行
  • cmd 脚本中的日期算术

    我需要编写一个脚本将文件名从 aDate txt 更改为 bDate txt 其中 aDate 是当前系统日期yyyymmdd格式和 bDate 是当前系统日期 1 inyyyymmdd format 我目前有 set yy date 6
  • Firestore 对象数据类型规则

    数据库有一个集合 Collection 集合内的每个文档都有一个对象 members 其中包含有权访问该文档的用户的 uid Collection gt document gt members BZntnJO2PVS8OZ9wctwHiyx
  • C# - 用数据表填充组合框

    我习惯于使用 Java 那里有大量的示例 由于各种原因 我不得不切换到 C 并尝试在 SharpDevelop 中执行以下操作 Form has a menu containing a combobox added via SharpDev
  • 使用autonomousSingleAppModePermissionAppIDs和UIAccessibilityRequestGuidedAccessSession与Meraki一起作为MDM进入单一应用程序模式

    我使用 Apple Configurator 将少量设备设置为受监管 但是 我无法使用以下命令让应用程序成功进入单一应用程序模式UIAccessibilityRequestGuidedAccessSession API 我创建了一个配置文件
  • 如何使用 mongodb 验证器验证对象数组?

    我一直在尝试使用 MongoDB 提供的验证器来验证我的数据 但遇到了问题 这是我要插入的一个简单的用户文档 name foo surname bar books name ABC no 19 name DEF no 64 name GHI
  • 集成 - Apache Flink + Spring Boot

    我正在测试 Apache Flink 和 Spring Boot 之间的集成 在 IDE 上运行它们很好 但是当我尝试在 Apache Flink Cluster 上运行时 我遇到了一个与 ClassLoader 相关的异常 这些课程非常简
  • 如何修复“(java:22494):Gdk-警告...”

    我正在编写一个 javafx 程序 我需要面板以恒定的速度更新 现在它设置为每秒更新一次 但我遇到了这个错误 通常 但并非总是 当整个场景变得扭曲时 面板中会出现故障 它就像镜子本身以奇怪的断断续续的 x 模式一样 很难解释 完整错误 ja
  • 如何在Python中获取当前脚本的代码?

    我想将当前脚本作为 Python 变量中的字符串获取 我发现了两种次优的方法 但我希望有更好的解决方案 我发现 The inspect导入有一个getsource方法 但只返回一个函数 或类或其他 的代码 而不是整个脚本 我找不到将整个脚本