6

是否可以(不必使用 python 自省)打印脚本的源代码?

我想执行一个简短的 python 脚本,它也打印它的源代码(这样我就可以看到执行了哪些命令)。

脚本是这样的:

command1()
#command2()
command3()

print some_variable_that_contain_src

真正的应用是我想用run -i魔法从 IPython 运行一个脚本,并将源(即执行的命令)作为输出。通过这种方式,我可以检查每次执行时注释了哪些命令。此外,如果在笔记本中执行,我会留下使用过哪些命令的痕迹。

解决方案

使用korylprince解决方案,我最终将这个单行代码放在脚本的开头:

with open(__file__) as f: print '\n'.join(f.read().split('\n')[1:])

这将打印除第一行之外的脚本源(这只是噪音)。修改切片以打印脚本的不同“切片”也很容易。

如果您想打印整个文件,则单行简化为:

with open(__file__) as f: print f.read()
4

2 回答 2

13

只要你没有对包做任何疯狂的事情,把它放在你脚本的顶部

with open(__file__) as f:
    print f.read()

它将读入当前文件并打印出来。

对于 python 3,请确保使用 print(f.read())

于 2013-08-20T02:30:34.087 回答
5

对于最简单的答案:

import my_module

print open(my_module.__file__).read()

我也尝试使用检查包。

import inspect

import my_module

source_list = inspect.getsourcelines(my_module)

会给你一个字符串列表,其中定义了源代码

for line in source_list[0]:
    print line

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

于 2013-08-20T02:29:14.290 回答