像python2一样读取python3中的zip文件

时间:2019-03-12 07:34:23

标签: python python-3.x python-2.7 unicode byte

我将以下代码保存在1个文件中。让我们说read_zipfile.py

with open("demo.zip", "rb") as f:
    read_data = f.read()
    print (read_data) 

python2提供以下输出:

[harsha@os]$ python2 read_zipfile.py
PK�flNdemo/PK
�flN����demo/hello.txtThi is Hello file
PK
�KK
   demo/hi.txtPK?�flN$��Ademo/
 �m@Q���^;T����m@Q���PK?
�flN����$ ���#demo/hello.txt
 �m@Q����m@Q����m@Q���PK?
�KK
   $ ���ademo/hi.txt
 ���B�������,���PK�

python3提供以下输出:

[harsha@os]$ python3 read_zipfile.py
    b'PK\x03\x04\x14\x03\x00\x00\x00\x00\x88flN\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00demo/PK\x03\x04\n\x03\x00\x00\x00\x00\x88flN\x83\x9d\xd9\xc9\x12\x00\x00\x00\x12\x00\x00\x00\x0e\x00\x00\x00demo/hello.txtThi is Hello file\nPK\x03\x04\n\x03\x00\x00\x00\x00\xf0\x18KK\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00demo/hi.txtPK\x01\x02?\x03\x14\x03\x00\x00\x00\x00\x88flN\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00$\x00\x00\x00\x00\x00\x00\x00\x10\x80\xedA\x00\x00\x00\x00demo/\n\x00 \x00\x00\x00\x00\x00\x01\x00\x18\x00\x80m@Q\xa4\xd8\xd4\x01\x00^;T\xa4\xd8\xd4\x01\x80m@Q\xa4\xd8\xd4\x01PK\x01\x02?\x03\n\x03\x00\x00\x00\x00\x88flN\x83\x9d\xd9\xc9\x12\x00\x00\x00\x12\x00\x00\x00\x0e\x00$\x00\x00\x00\x00\x00\x00\x00 \x80\xa4\x81#\x00\x00\x00demo/hello.txt\n\x00 \x00\x00\x00\x00\x00\x01\x00\x18\x00\x80m@Q\xa4\xd8\xd4\x01\x80m@Q\xa4\xd8\xd4\x01\x80m@Q\xa4\xd8\xd4\x01PK\x01\x02?\x03\n\x03\x00\x00\x00\x00\xf0\x18KK\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00$\x00\x00\x00\x00\x00\x00\x00 \x80\xa4\x81a\x00\x00\x00demo/hi.txt\n\x00 \x00\x00\x00\x00\x00\x01\x00\x18\x00\x00\xb6\x96\xfa\x0fB\xd3\x01\x80\xd0\xd6\x16\xa4\xd8\xd4\x01\x00,\x17\x0f\xa4\xd8\xd4\x01PK\x05\x06\x00\x00\x00\x00\x03\x00\x03\x00\x14\x01\x00\x00\x8a\x00\x00\x00\x00\x00'

如何使用python3获取python2输出格式?

1 个答案:

答案 0 :(得分:0)

为了在Python 3中将原始字节转储到STDOUT,请使用基础sys.stdout的二进制流。 可以通过.buffer属性进行访问。

print(read_data)更改为

sys.stdout.buffer.write(read_data)
sys.stdout.buffer.write(b'\n')

如果您想精确地模仿print的行为,则最后一行是必需的。

相关问题