簡體   English   中英

Python無法解壓gzip文件

[英]Python unable to decompress gzip file

我有一個帶有特殊文件結尾 (.dsx) 的文件,它基本上是一個 gzip 格式的 XML 文件。 我可以使用解壓縮該文件

$ gzip -S .dsx -d -c file.dsx
<prints my XML to the console>

我正在嘗試用 Python 做同樣的事情:

import sys
import gzip

def main():

    file_path = sys.argv[1]
    
    with gzip.open(file_path, 'rb') as f:
        file_content = f.read()
        # ...


if __name__ == "__main__":
    main()

但我收到以下錯誤:

Traceback (most recent call last):
  File "<truncated>\decode-dsx.py", line 17, in <module>
    main()
  File "<truncated>\decode-dsx.py", line 13, in main
    file_content = f.read()
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1520.0_x64__qbz5n2kfra8p0\lib\gzip.py", line 301, in read
    return self._buffer.read(size)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1520.0_x64__qbz5n2kfra8p0\lib\_compression.py", line 118, in readall    
    while data := self.read(sys.maxsize):
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1520.0_x64__qbz5n2kfra8p0\lib\gzip.py", line 488, in read
    if not self._read_gzip_header():
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1520.0_x64__qbz5n2kfra8p0\lib\gzip.py", line 436, in _read_gzip_header  
    raise BadGzipFile('Not a gzipped file (%r)' % magic)
gzip.BadGzipFile: Not a gzipped file (b'PK'

我還嘗試通過添加.gz行結尾直接調用模塊,然后調用:

python -m gzip -d .\file.gz

它產生相同的錯誤。

感謝@jasonharper 的提示,它確實只是一個普通的 zip 文件。

import sys
import zipfile
import os

def main():

    file_path = sys.argv[1]
    file_name = os.path.basename(file_path)

    with zipfile.ZipFile(file_path, mode="r") as archive:
        with archive.open(f'{file_name}.xml') as myfile:
            print(myfile.read())


if __name__ == "__main__":
    main()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM