是否可以(不必使用python内省)打印脚本的源代码?
我想执行一个也打印其源代码的短python脚本(所以我可以看到执行了哪些命令)。
脚本是这样的:
command1()
#command2()
command3()
print some_variable_that_contain_src
真正的应用是我想从IPython运行一个带有run -i
魔法的脚本,并输出源(即执行的命令)。通过这种方式,我可以检查每次执行时评论的命令。此外,如果在笔记本中执行,我会留下一些已经使用过的命令。
使用 korylprince 解决方案我最终将这个单行放在脚本的开头:
with open(__file__) as f: print '\n'.join(f.read().split('\n')[1:])
这将打印除第一行之外的脚本源(仅为噪声)。修改切片也很容易,以便打印脚本的不同“切片”。
如果您想要打印整个文件,单行简化为:
with open(__file__) as f: print f.read()
答案 0 :(得分:9)
只要您没有对包裹做任何疯狂的事情,请将其放在脚本的顶部
with open(__file__) as f:
print f.read()
将在当前文件中读取并打印出来。
答案 1 :(得分:4)
最简单的答案:
import my_module
print open(my_module.__file__).read()
我也尝试过使用inspect包。
import inspect
import my_module
source_list = inspect.getsourcelines(my_module)
将为您提供一个包含其中定义的源代码的字符串列表
for line in source_list[0]:
print line
将以可读的方式打印出整个源代码