有没有一个python函数可以生成python代码字符串的字节码?

imk*_*dal 2 python bytecode built-in bytecode-manipulation

例如我可以做这样的事情吗

pythonCode = "print 'hello world'"
pyc = generate_bytecode(pythonCode)
Run Code Online (Sandbox Code Playgroud)

其中 pyc 将包含 pythonCode 的字节码?

编辑:我的目标本质上是准确获取将写入文件中的 .pyc 的内容到变量中。幻数、时间戳、十六进制版本的代码等等

Ign*_*ams 5

传递'exec'to将从 Python 语句生成一个代码对象modecompile()访问co_code代码对象的属性将为您提供原始字节码。请注意,如果没有其他属性,仅此一项几乎毫无用处co_*

>>> c = compile('print a', '<string>', 'exec')
>>> dir(c)
['__class__', '__cmp__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'co_argcount', 'co_cellvars', 'co_code', 'co_consts', 'co_filename', 'co_firstlineno', 'co_flags', 'co_freevars', 'co_lnotab', 'co_name', 'co_names', 'co_nlocals', 'co_stacksize', 'co_varnames']
>>> c.co_code
'e\x00\x00GHd\x00\x00S'
>>> c.co_names
('a',)
>>> c.co_consts
(None,)
>>> dis.dis(c)
  1           0 LOAD_NAME                0 (a)
              3 PRINT_ITEM          
              4 PRINT_NEWLINE       
              5 LOAD_CONST               0 (None)
              8 RETURN_VALUE        
Run Code Online (Sandbox Code Playgroud)