我的代码:
# -*- coding: utf-8 -*- #
if __name__ == "__main__":
try:
f = open("test.dll", 'rb')
context = f.read()
f.close()
print(context)
except Exception as e:
print(e)
当我使用python3:
时,输出是这样的字节B' b \' MZ \ X90 \ X00 \ X03 \ X00 \ X00 \ X00 \ X04 \ X00 \ X00 \ X00 \ XFF \ XFF \ X00 \ X00 \ XB8 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 @ \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ X00 \ XF0 \ X00 \ X00 \ X00 \ x0e \ X1F \ XBA \ x0e \ X00 \ XB4 \牛逼\ XCD!\ XB8 \ x01L \ XCD!这 程序无法在DOS模式下运行。\ r \ n \ n \ n $ \ x00 \ x00 \ x00 \ x00
当我使用python2时,输出就像我想要的那样:
MZ? ? @? ? ??? L?该程序无法在DOS模式下运行。
$ 2!跪v @住v @住v @住8B@住8 ^@住8T‰@住8D
如何使用python3获取python2的输出?
PS: 我尝试像这样解码输出:
context = f.read().decode("utf-8")
但是有这样的错误:
' UTF-8'编解码器不能解码位置2中的字节0x90:无效的起始字节
另一种解码类型具有相同的错误。
如何获得正确的输出?非常感谢。
答案 0 :(得分:2)
哦,对不起 我有方法:
代码:
combined_list = list1 + list2
final_dict = {tuple(i[:2]):tuple(i[2:]) for i in combined_list}
> {('A', 14): ('Y', 0, 200),
('B', 15): ('M', 0, 400),
('C', 16): ('F', 50, 60),
('C', 17): ('G', 0, 600)}
merged_list = [list(k) + list (final_dict[k]) for k in final_dict]
> [['C', 16, 'F', 50, 60],
['B', 15, 'M', 0, 400],
['C', 17, 'G', 0, 600],
['A', 14, 'Y', 0, 200]]
使用'ignore'param