python中的自解压缩和执行代码

python中的自解压缩和执行代码,python,metaprogramming,Python,Metaprogramming,这是创建包含任意python代码的压缩文件的代码。其思想是在raw_code变量赋值中粘贴某种python程序,然后运行脚本,创建一个.py文件,该文件是函数式python代码,打开另一个python shell并执行其中存储的压缩代码 import zlib raw_code = """print 'hello world' """ code_prefix = """import zlib import os compressed_code = \"\"\" """ code_post

这是创建包含任意python代码的压缩文件的代码。其思想是在raw_code变量赋值中粘贴某种python程序,然后运行脚本,创建一个.py文件,该文件是函数式python代码,打开另一个python shell并执行其中存储的压缩代码

import zlib

raw_code = """print 'hello world' """

code_prefix = """import zlib
import os

compressed_code = \"\"\"
"""

code_postfix = """
\"\"\"

os.system('python ' + zlib.decompress(compressed_code))
"""

full_code = code_prefix + zlib.compress(raw_code) + code_postfix


with open("/some/kind/of/path/compCode.py", "wb") as outfile:
    outfile.write(full_code)
从中获取的文件如下所示:

import zlib
import os

compressed_code = """
x��*(��+QP�H���W(�/�IQ�N�
"""

os.system('python ' + zlib.decompress(compressed_code))
我遇到的问题是,尝试运行第二个文件会导致错误:

  File "compCode.py", line 6
SyntaxError: Non-ASCII character '\x9c' in file compressedPYCode.py on line 7, 
but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
在压缩的_代码变量之前添加“r”没有帮助。我想做的事情真的可能吗?

试着在脚本的第一行添加
#-*-编码:utf-8-*-

您可以强制编码以正确加载字符串,但里程数可能会有所不同。如果字符串中有空字节或其他内容,它们显然无法正确存储