python - 解析csv文件并使用python调用rest api

我是 Python 的新手,我有一项任务是逐行解析一个非常大的 .csv 文件,然后基于逗号分隔值,我必须调用 REST api。有人可以帮我提供示例代码吗.

基于 csv 文件的第一列值,我必须调用不同的 REST api 或创建不同的 rest URL 及其相应参数。存储这些的最佳方式是什么?拥有 xml 更好,还是 HashMap 或 ??? .因此当我从 csv 读取每一行时,我从我的配置中获取 url 和所需的参数,然后我必须为 REST api 创建 URL 并调用调用。

第二个问题:我们是否需要创建任何线程以使其执行得更快

我的代码如下所示。

import sys, argparse, csv, collections, time, datetime

EventAPIDict = {"evnet_1": "http://rest_apiurl/?",
                "evnet_2": "http://rest_apiurl/?"}

EventParamsDict = {"evnet_1": ("s", "ts"),
                "evnet_2": ("s")}

EventIndexDict = {"evnet_1": ("1", "4"),
                  "evnet_2": ("1")}

def processRow(row):
    print "-----------------------------"
    #print localRow
    event = row[0]
    if event in EventAPIDict:
        print event
        strRESTAPI = EventAPIDict[event]
        i = 0
        for param in EventParamsDict[event]:
            #print param
            indexes = EventIndexDict[event]
            value = row[int(indexes[i])]
            if param == "ts":
                timestamp = value #"2013-05-28 14:28:58"
                value = datetime.datetime.strptime(timestamp, '%Y-%m-%d %H:%M:%S').strftime("%s")
            strRESTAPI = ("%s%s=%s&")%(strRESTAPI, param, value)
            i = i + 1

        strRESTAPI = strRESTAPI[:-1]
        print strRESTAPI
        #TODO: Invoke the Rest API

#TODO: Get the csv file to be parsed.
fileName = "LogDetails.log"
# open csv file
with open(fileName, 'rb') as csvfile:
    csvfile.seek(0)

    reader = csv.reader(csvfile, delimiter=',')

    for row in reader:
        processRow(row)

最佳答案

回答您的问题 #1 - 是的,此脚本将解析 CSV 文件并对其执行操作。我使用你的基本结构在我的脚本中做同样的事情。您也可以从 XML 或 JSON 格式解析它,这些格式更易于移植到其他系统。

我必须查看数据文件才能更多地理解为什么要进行比较等。我希望输入的 CSV 包含调用 REST API 所需的所有信息。

第二个问题:

使用file seek函数来创建不同的线程并执行一定数量的调用。当然,您还有一个问题,即可以并发调用多少个,服务器可以处理多少个。

https://stackoverflow.com/questions/17074356/

相关文章:

c# - 如何上传文件并将其保存在本地计算机的特定文件夹中?

python - 在 python 解释器和脚本文件中运行时的不同结果

qt - qml listview提高改变项目的速度

javascript - Shopify 'View all' 按钮实现

asp.net - URL 重写出站规则和自定义错误页面

maven - 如何在 ftp 中部署 Maven Web 应用程序?

node.js - 为什么process.memoryUsage()不输出 Node 进程消耗的内存

machine-learning - 最先进的增量决策树学习者

java - 创建 keystore 时出错 => 线程 "main"java.io.DataInp

google-chrome - CORS 错误仅发生在 Chrome 中的某些 XHR 上