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等)中,也可以确保文件立即被确定地关闭。在
'\0'*4
是一个str
,使用b'\0' * 4
获得所需的bytes
值。在您的问题是您试图连接两个
byte
和一个str
。这在python3中是不可能的,因为python3明确区分了字节和字符串(鉴于python2中str
和unicode
之间的区别有点模糊,这是一件好事)。我想你想要的可能是:字符串前面的
b
是一个标记,它告诉python字符串是byte
字符串,而不是str
字符串。在还请注意,我添加了
with ... as ...:
,这将确保即使在非CPython实现(PyPy、Jython、IronPython等)中,也可以确保文件立即被确定地关闭。在相关问题 更多 >
编程相关推荐