gpt4 book ai didi

python - 在 python 中模拟 curl

转载 作者:行者123 更新时间:2023-11-28 17:40:31 28 4
gpt4 key购买 nike

以下 curl 代码有效:

curl --form addressFile=@t.csv --form benchmark=Public_AR_Census2010 http://geocoding.geo.census.gov/geocoder/locations/addressbatch

t.csv 就是简单的

1, 800 Wilshire Blvd, Los Angeles, CA, 90017

我如何在 python 中模仿它。到目前为止,我所有的尝试都导致了“错误的请求”。我还试图将所有内容保存在内存中——不写入文件。

一次尝试:

import requests
url = "http://geocoding.geo.census.gov/geocoder/json/addressbatch"

# data is csv like string with , and \n
ddata = urllib.urlencode({'addressFile' : data, 'benchmark' : 'Public_AR_Current'})
r = requests.get(url + "?" + ddata) # Forcibly closed by remote

requests.put("http://geocoding.geo.census.gov/geocoder/json/addressbatch", ddata)

最佳答案

一个选择是使用 requests :

import requests

url = "http://geocoding.geo.census.gov/geocoder/locations/addressbatch"
data = {'benchmark': 'Public_AR_Census2010'}
files = {'addressFile': open('t.csv')}

response = requests.post(url, data=data, files=files)
print response.content

打印:

"1"," 800 Wilshire Blvd,  Los Angeles,  CA,  90017","Match","Exact","800 Wilshire Blvd, LOS ANGELES, CA, 90017","-118.25818,34.049366","141617176","L"

如果您需要处理内存中的 csv 数据,请初始化一个 StringIO缓冲区:

from StringIO import StringIO
import requests

csv_data = "1, 800 Wilshire Blvd, Los Angeles, CA, 90017"
buffer = StringIO()
buffer.write(csv_data)
buffer.seek(0)

url = "http://geocoding.geo.census.gov/geocoder/locations/addressbatch"
data = {'benchmark': 'Public_AR_Census2010'}
files = {'addressFile': buffer}

response = requests.post(url, data=data, files=files)
print response.content

这会打印出与使用真实文件相同的结果。

关于python - 在 python 中模拟 curl ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25024087/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com