反工程python 3

2024-04-25 18:55:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道有没有办法绕过这个错误。任何帮助都将不胜感激!在

TypeError: can't concat bytes to str
^{pr2}$

Tags: tobytes错误canstr办法concattypeerror
2条回答

'\0'*4是一个str,使用b'\0' * 4获得所需的bytes值。在

您的问题是您试图连接两个byte和一个str。这在python3中是不可能的,因为python3明确区分了字节和字符串(鉴于python2中strunicode之间的区别有点模糊,这是一件好事)。我想你想要的可能是:

import marshal, imp

f=open('PYTHONSCRIPT','rb')
f.seek(28)  # Skip the header, you have to know the header size beforehand

ob=marshal.load(f)

for i in range(0,len(ob)):
    with open(str(i)+'.pyc','wb') as my_file:
        my_file.write(imp.get_magic() + b'\0'*4 + marshal.dumps(ob[i]))

f.close()

with open(str(i)+'.pyc','wb') as my_file:
    my_file.write(imp.get_magic() + b'\0'*4 + marshal.dumps(ob[i]))

字符串前面的b是一个标记,它告诉python字符串是byte字符串,而不是str字符串。在

还请注意,我添加了with ... as ...:,这将确保即使在非CPython实现(PyPy、Jython、IronPython等)中,也可以确保文件立即被确定地关闭。在

相关问题 更多 >