我正在使用python manage.py
shell。当我发送以下代码时:
import requests
import json
import urllib
import gzip
import csv
from usuario.models import Usuario
from calculadora.models import Prazo
r = requests.post("https://onesignal.com/api/v1/players/csv_export?app_id=*****", headers={"Authorization": "Basic *****"})
url = json.loads(r.content)["csv_file_url"]
file = urllib.URLopener()
file.retrieve(url, "C:\Users\legal\Desktop\file.gz")
f = gzip.open("C:\\Users\\legal\\Desktop\\file.gz")
arquivo = csv.reader(f)
出现以下错误:
IOError: ('http error', 403, 'Forbidden', <httplib.HTTPMessage instance at 0x05551990>)
但是,如果我先发送:
import requests
import json
import urllib
import gzip
import csv
from usuario.models import Usuario
from calculadora.models import Prazo
r = requests.post("https://onesignal.com/api/v1/players/csv_export?app_id=*****", headers={"Authorization": "Basic ******"})
url = json.loads(r.content)["csv_file_url"]
file = urllib.URLopener()
然后:
file.retrieve(url, "C:\Users\legal\Desktop\file.gz")
f = gzip.open("C:\\Users\\legal\\Desktop\\file.gz")
arquivo = csv.reader(f)
代码运行没有任何错误,我无法理解发生了什么。
答案 0 :(得分:0)
问题是同步,我使用以下方法解决这个问题:
f = urllib.URLopener()
time.sleep(5)
f.retrieve(url, "C:\Users\\legal\\Desktop\\file.gz")