2013-06-12 112 views
1

调用REST API,我很新的Python的,我有个任务由线基础上逗号分隔值解析线非常巨大的.csv文件,然后,我得叫REST API有人可以帮助我一个示例代码。解析一个CSV文件,使用python

基于csv文件的第一列值,我必须调用不同的REST api或创建不同的静态URL及其相应的参数。存储这些值的最佳方式是什么?最好是有一个xml,或散列图或?是.so,当我读了CSV每一行,我得到的网址,并从我的配置所需要的参数,然后我必须做出对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) 
+0

多大'csv'? – agconti

+0

有没有更好的xml或散列图或? - XML是一种文件格式,而哈希映射是内存中的数据结构。也许你可以向我们展示你已经尝试过的代码。 –

+0

谢谢你这么多的response.file大小约为16GB和proecssing应该是非常快。 – user2479840

回答

0

要回答你的问题#1 - 是的,这个脚本将解析一个CSV文件,并就此采取行动。我用你的基本结构在我的脚本中做同样的事情。您也可以从XML或JSON格式解析它,这些格式对其他系统更具可移植性。

我会看到一个数据文件的理解多一点,为什么你做的比较和等。我希望输入CSV包含您需要调用REST API的所有信息。

第二个问题:

使用file seek函数来创建不同的线程,并执行呼叫的定数。当然,你也有问题可以同时进行多少个呼叫以及服务器可以处理多少个呼叫。