繁体   English   中英

读取 CSV 文件并使用 Python 从每一行进行 HTTP POST

[英]Read a CSV file and make HTTP POST from each line with Python

I have a CSV file witch I want to read each line and match the header to the value to make a HTTP POST to a web server. 以下是 CSV 文件的示例:

"Item Name","OS","Serial Number","Asset Tag","Manufacturer","Model Name","Model Number","Category","IP","Status"
"MYCOMPUTER","Microsoft Windows 10 Pro","SOMETHING","SOMETHING","Dell","Latitude ","5420","Desktop","0.0.0.0","Ready"

这是我的 python 代码:

    import requests
import csv
import time
import pandas as pd

url = "https://develop.snipeitapp.com/api/v1/hardware"

headers= {
    "Accept": "application/json",
    "Content-Type": "application/json"
}


df = pd.read_csv('IMPORT.csv')
for idx, data in df.iterrows():
    payload = {
    "status_id", data['Status'],
    "model_id", data['Model Number'],
    "name", data['Item Name'],
    "model_name", data['Model Name'],
    "serial", data['Serial Number'],
    "os", data['OS'],
    "manufacturer", data['Manufacturer'],
    "ip", data['IP'],
    "Category", data['Category']
    
}
    response = requests.request("POST", url, json=payload, headers=headers)

但是,如果有意义的话,我想为 CSV 文件中的每一行发布一个帖子,其值与每个有效负载提交的 header 匹配。

更新我在这篇文章中更新了我的代码,现在我收到了这个错误:

TypeError: Object of type set is not JSON serializable

预先感谢! 最好的问候马克斯

您有多个选项,但都有一个共同点,您需要打开文件并遍历行。

您可以使用 csv 模块、使用 pandas 或仅通过 open 语句打开文件:

HEADERS= {
    "Accept": "application/json",
    "Content-Type": "application/json"
}

1 Pandas

import pandas as pd
df = pd.read_csv('csv_path_here')
for idx, data in df.iterrows():
    payload = {'asset_tag', data['asset_tag'] .....}
    response = requests.request("POST", url, json=payload, headers=headers)
    # do stuff here

2 从这里使用 csv

import csv
rows = []
with open("Salary_Data.csv", 'r') as file:
    csvreader = csv.reader(file)
    header = next(csvreader)
    for row in csvreader:
        rows.append(row)

#Iterate now over rows
For row in rows[1:]:
    payload = {'asset_tag', row[0] .....}
    response = requests.request("POST", url, json=payload, headers=headers)

嗨,您需要一个数据结构来保存所有 csv 数据,以便使用 Pandas。 首先在 python 中安装 pandas 您可以通过以下命令安装它。

pip install pandas

之后导入 package 并使用pandas.read_csv读取 csv 并将其获取到 Z251D62BBFE9A3B784E 帧现在遍历数据框并发出发布请求。 下面的示例代码。

import pandas as pd

df = pd.DataFrame({'c1': [10, 11, 12], 'c2': [100, 110, 120]})

for index, row in df.iterrows():
    print(row['c1'], row['c2'])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM