【问题标题】:How to read excel file row by row and pass it in a curl command?如何逐行读取excel文件并将其传递给curl命令?
【发布时间】:2019-05-13 04:19:56
【问题描述】:

所以我正在尝试读取一个 excel 文件并将其传递给 curl 命令。所以在我的 curl 命令中,我需要 4 件事。我需要名称、路径、Tname 和格式。

所以对我来说,要运行这个脚本,我需要做的就是解析 excel 文件。它应该通过按列解析来获取数据。所以在列中,我有名称、路径和格式等标题。我试图让它读取列并从那里获取数据并将其发送到 curl 命令。一旦它通过,它应该去下一行并做同样的事情,直到它到达最后。

所以我的 curl 命令我知道需要修复的问题。目前我并不关心 curl 命令。我更关心如何获取数据并将其发送到 curl 命令。

我使用 pandas 获得了 excel 表。一旦我这样做了,我将每一列附加到一个数组中。然后在我的 curl 命令中,我试图通过它。

出于隐私原因,我在我的 url 和用户中使用 * 并通过。就像我说的,我不关心 curl 命令。我正在尝试修复我的代码以获取数据并将其发送到 curl 命令。

import requests
import json
import pprint
import urllib
import sys
import pandas as pd

path='data.xlsx'
excel=pd.read_excel(path)
name = []
path = []
Tname = []
formatG = []
for cell in excel:
    name.append(cell[:0]),
    path.append(cell[:1]),
    Tname.append(cell[:2]),
    formatG.append(cell[:3])

url='*'
data={
           'name':'{}'.format(name),
           'path':'{}'.format(path),
           'TName':'{}'.format(Tname),
           'formatG':'{}'.format(formatG)           
     }

djson=json.dumps(data)
headers={'content-type':'application/json','Authorization':'token' {}.format(fk)}
response=requests.post(url,data=data_json,headers=headers)
pprint.pprint(response.json())

【问题讨论】:

    标签: python excel pandas dataframe python-requests


    【解决方案1】:

    如果您的 csv 文件包含逗号分隔的数据,例如:

    name,path,Tname,formatG
    tom,vv,teto,mp4
    mane,bb,memo,png
    

    那么您可以使用如下代码:

    data = []
    with open('myfile.txt') as f:
        for line in f:
            data.append(line.strip().split(','))
    
    data = data[1:]  # get the data without the first row which is data headers
    print(data)
    
    for entry in data:  
        name, path, Tname, formatG = entry
        # do your curl stuff
    

    数据如下:

    [['tom', 'vv', 'teto', 'mp4'], ['mane', 'bb', 'memo', 'png']]
    

    【讨论】:

      【解决方案2】:

      试试这个。

      data_list = []
      for cell in excel: data_list.append({'name':cell[:0],'path':cell[:1]),'TName':cell[:2]),'formatG':cell[:3]})
      url='*'
      headers={'content-type':'application/json','Authorization':'token' {}.format(fk)}
      for i in data_list: response=requests.post(url,data=i,headers=headers)
      

      让我知道它是否有效。

      【讨论】:

      • 谢谢,如果我这样做。它会逐列读取数据吗
      • 我的意思是在你的代码中包含这个。不要只是更换它。最好找到一种方法将读取的数据转换为名称为excel 的更大列表,您可以从中读取小列表。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-27
      • 1970-01-01
      • 2021-03-04
      • 2020-05-09
      • 1970-01-01
      相关资源
      最近更新 更多