看起来像 b'\x1f\x8b\.....' 的文件格式到底是什么

lmb*_*loo 4 python file

当我从 aws s3 获取文件时,我得到的格式如下:

b'\x1f\x8b\x08\x00\x0e@\xfd[\x00\x03\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00'
Run Code Online (Sandbox Code Playgroud)

这到底是什么?

此外,当获取数据 -unzip - 上传回 s3 时,可以使用以下命令来完成:

s3 = boto3.client('s3', use_ssl=False)  
s3.upload_fileobj(
    Fileobj = gzip.GzipFile(
                None,
                'rb',
                fileobj=BytesIO(s3.get_object(Bucket=bucket, Key=gzipped_key)['Body'].read())),
    Bucket=bucket,
    Key=uncompressed_key)
Run Code Online (Sandbox Code Playgroud)

b'\x1f\x8b\x08\x00\x0e@\xfd[\x00\x03\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00'当我运行s3.get_object(Bucket=bucket)线路时我明白了,但为什么要把它绕起来BytesIO呢?

pax*_*blo 8

这到底是什么?

[0x1f, 0x8b, 0x08]是文件的标头gzip。我建议您运行它或使用类似检查其内容之gzip类的方式打开它。7zip

字节IO怎么样?

好问题。不幸的是,这个问题中没有足够的信息来给你一个简洁的答案。如果您想要一篇 5000 字的文章BytesIO以及它是如何运作的,我很乐意效劳,但这可能不是合适的地方:-)


更严肃地说,您可能想将您的兴趣领域缩小到更具体的范围。此外,将问题限制为一个问题通常是个好主意,因为这使得 StackOverflow 更易于搜索/管理。

  • 你用“rb”打开,显然没有“encoding”关键字。如果没有“b”,您会说“我希望这是特定编码的文本”(如果您不说是哪种编码,则为 UTF-8)。也许此时您需要停下来阅读 [每个软件开发人员绝对、肯定必须了解 Unicode 和字符集的绝对最低限度(没有任何借口!)](https://www.joelonsoftware.com/2003/10/08/每个软件开发人员绝对必须了解 unicode 和字符集的绝对最低限度/) (2认同)
  • 也许[每个程序员绝对需要了解的关于处理文本的编码和字符集](http://kunststube.net/encoding/)实际上更接近您立即需要的内容。 (2认同)