这更像是一个玩具问题'而不是真实的,但你可以使用py_compile
模块从命令行编译一行Python代码吗?
我的第一次尝试是python -m py_compile "print 'Hello, Compile!'"
,但导致IOError
,因为my_compile
认为我正在尝试编译一个名为&#34的文件; print' Hello,Compile !'"
有什么想法吗?
注意:python -c "CODE"
运行代码,它不会生成带字节码的* .pyc文件。
答案 0 :(得分:1)
不是真的。 py_compile
和compileall
旨在用于文件。你当然可以使用一些临时文件,但这是不必要的。
相反:您是否只是尝试使用dis
?您可以通过指定-
:
ben@nixbox:~$ echo "print 'hello'" | python -m dis -
1 0 LOAD_CONST 0 ('hello')
3 PRINT_ITEM
4 PRINT_NEWLINE
5 LOAD_CONST 1 (None)
8 RETURN_VALUE
答案 1 :(得分:0)
您不需要py_compile
模块来编译 - CPython解释器总是在执行之前编译为字节码。
这里真正的问题是,在您编译之后,您希望它与字节码有什么关系?
以下是您可能想到的一件事:
$ python -c '
def f():
print "Hello, World"
import dis
dis.dis(f)'
2 0 LOAD_CONST 1 ('Hello, World')
3 PRINT_ITEM
4 PRINT_NEWLINE
5 LOAD_CONST 0 (None)
8 RETURN_VALUE
我认为这不可能是一条真正的单线" (由于Python的语法没有嵌入命令中的新行),但你看到了这个想法。