使用python请求下载压缩的tar.gz文件,然后使用tar

时间:2019-01-21 12:12:44

标签: python python-requests gzip tar

我需要使用请求调用来下载tar gz文件,我发现request.get自动解压缩该文件,我尝试使用给定的here解决方案,但是当我尝试使用tar将其解压缩时,说它不是gzip格式。

我尝试了以下方法:

response = requests.get(url,auth=(user, key),stream=True)
if response.status_code == 200:
    with open(target_path, 'wb') as f:
        f.write(response.raw)

if response.status_code == 200:
    with open(target_path, 'wb') as f:
        f.write(response.raw)

raw = response.raw
with open(target_path, 'wb') as out_file:
    while True:
        chunk = raw.read(1024, decode_content=True)
        if not chunk:
            break
        out_file.write(chunk) 

以上所有在解压缩时都会引发错误:

$ tar -xvzf /tmp/file.tar.gz -C /

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now

注意:不能使用urllib.open,因为我需要身份验证等,因此必须使用请求库

1 个答案:

答案 0 :(得分:1)

您只需要将componentDidMount() { if (JSON.parse(localStorage.getItem('savedData')) !== null) { const savedCartItems = JSON.parse(localStorage.getItem('savedData')) this.setState({ cartItems, totalPrice: this.getPriceOnLoad(savedCartItems), totalItems: this.getItemsOnLoad(savedCartItems), }); } } 更改为f.write(response.raw)

尝试下面的代码,这应该为您提供正确的tar gz文件。

f.write(response.raw.read())