Python 从API下载csv数据

Python 从API下载csv数据,python,python-3.x,csv,Python,Python 3.x,Csv,我试图从API下载csv数据,然后对其进行编辑。我正在努力使不同的函数协同工作 i、 e.通过导出链接下载文件,然后打开文件 ''' File name: downloadAWR.py Author: Harry&Joe Date created: 3/10/17 Date last modified: 5/10/17 Version: 3.6 ''' import requests import json import urllib2 import zipfile impor

我试图从API下载csv数据,然后对其进行编辑。我正在努力使不同的函数协同工作

i、 e.通过导出链接下载文件,然后打开文件

    '''
File name: downloadAWR.py
Author: Harry&Joe
Date created: 3/10/17
Date last modified: 5/10/17
Version: 3.6
'''

import requests
import json
import urllib2
import zipfile
import io
import csv
import os
from urllib2 import urlopen, URLError, HTTPError
geturl()用于创建csv数据的下载链接,其中一个链接将使用用户输入数据创建,在本例中为名称和日期,然后创建一个链接,我们可以使用该链接下载数据。该链接存储在导出链接中

def geturl():

#getProjectName
project_name = 'BIMM'

#getApiToken
api_token = "API KEY HERE"

#getStartDate
start_date = '2017-01-01'

#getStopDate
stop_date = '2017-09-01'

url = "https://api.awrcloud.com/get.php?action=export_ranking&project=%s&token=%s&startDate=%s&stopDate=%s" % (project_name,api_token,start_date,stop_date)

export_link = requests.get(url).content

return export_link
dlfile用于实际使用链接获取我们可以操作和编辑的文件,例如删除列和一些数据

def dlfile(export_link):
# Open the url
try:
    f = urlopen(export_link)
    print ("downloading " + export_link)

    # Open our local file for writing
    with open(os.path.basename(export_link), "wb") as local_file:
        local_file.write(f.read())

#handle errors
except HTTPError as e:
    print ("HTTP Error:", e.code, export_link)
except URLError as e:
    print ("URL Error:", e.reason, export_link)

return f
readdata用于进入文件并打开它供我们使用

def readdata():
    with zipfile.ZipFile(io.BytesIO(zipdata)) as z:
        for f in z.filelist:
            csvdata = z.read(f)

#reader = csv.reader(io.StringIO(csvdata.decode()))



def main():
#Do something with the csv data

    export_link = (geturl())


    data = dlfile(export_link)

    csvdata = data.readdata()



if __name__ == '__main__':
    main()

一般来说,我发现代码是独立工作的,但当我试图同步地将它们放在一起时,代码会遇到困难

您需要清理并适当调用代码。看起来你从不同的来源复制粘贴的代码,现在你有了一些混合不好的代码

如果任务只是读取并打开远程文件以对其执行某些操作:

import io
import zipfile
import requests

def get_csv_file(project, api_token, start_date, end_date):
   url = "https://api.awrcloud.com/get.php"
   params = {'action': 'export_ranking',
             'project': project,
             'token': api_token,
             'startDate': start_date,
             'stopDate': end_date}

   r = requests.get(url, params)
   r.raise_for_status()

   return zipfile.ZipFile(io.BytesIO(request.get(r.content).content))

def process_csv_file(zip_file):
    contents = zip_file.extractall()
    # do stuff with the contents

if __name__ == '__main__':
   process_zip_file(get_csv_file('BIMM', 'api-key', '2017-01-01', '2017-09-01'))

欢迎来到stackoverflow。我建议你读一下:把你的问题编辑成更小的内容。在此之前-1