打印其源代码的Python脚本

时间:2013-08-20 02:19:30

标签: python

是否可以(不必使用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()

2 个答案:

答案 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

将以可读的方式打印出整个源代码