2017-09-01 13 views
0

は私が要求するモジュールコンテンツをtarファイルに直接書き込む方法は?

r = requests.get('https://stg-app.conduce.com/conduce/api/v1/admin/export/' + id, 
       headers=headers) 
r.content ##binary tar file info 

でそれをやろうとしています、私はここで

curl --insecure --header "Expect:" \ 
    --header "Authorization: Bearer <api key>" \ 
    https://some-url --silent --show-error --fail -o data-package.tar -v 

に対してカールの要求を行うことができますURLを持ってどのように私はtarファイルのようなデータパッケージにこれを書くのですか?

答えて

1

contentは、書き込むことができるファイル全体(バイト数)になります。

import requests 

r = requests.get('...YOUR URL...') 

# Create a file to write to in binary mode and just write out 
# the entire contents at once. 
# Also check to see if we get a successful response (add whatever codes 
# are necessary if this endpoint will return something other than 200 for success) 
if r.status_code in (200,): 
    with open('tarfile.tar', 'wb') as tarfile: 
     tarfile.write(r.content) 

あなたが任意のtarファイルをダウンロードしていると、それはかなり大きくなる可能性がある場合は、することができますchoose to stream it代わりに。

import requests 

tar_url = 'YOUR TAR URL HERE' 
rsp = requests.get(tar_url, stream=True) 
if rsp.status_code in (200,): 
    with open('tarfile.tar', 'wb') as tarfile: 
     # chunk size is how many bytes to read at a time, 
     # feel free to adjust up or down as you see fit. 
     for file_chunk in rsp.iter_content(chunk_size=512): 
      tarfile.write(chunk) 

このパターンは(wbモードでファイルを開く)ことを注意は、一般的にバイナリファイルの任意のタイプの書き込みで動作しなければなりません。 writing file documentation for Python 3(Python 2 documentation here)を読むことをお勧めします。

関連する問題