这是创建包含任意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
在compressed_code变量之前添加'r'没有帮助。我想要做的事实际上可能吗?
答案 0 :(得分:0)
尝试将# -*- coding: utf-8 -*-
放在脚本的第一行。
您可以强制编码以正确加载字符串,但里程可能会有所不同。如果字符串中有空字节或其他内容,则显然无法正确存储它们。