Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python数据上传错误_Python_Json_Python 2.7_Api_Urllib2 - Fatal编程技术网

Python数据上传错误

Python数据上传错误,python,json,python-2.7,api,urllib2,Python,Json,Python 2.7,Api,Urllib2,通过使用python代码,我试图从json文件读取数据,并通过API上传数据。然而,我得到了HTTP错误5000。以下是我的代码: url = 'http://sipdev1.vbi.vt.edu:8080/EpiViewer/epiviewer/services/uploadGraphData' for i in json_file_name: json_data = open (i, 'r') lines=json_data.

通过使用python代码,我试图从json文件读取数据,并通过API上传数据。然而,我得到了HTTP错误5000。以下是我的代码:

    url = 'http://sipdev1.vbi.vt.edu:8080/EpiViewer/epiviewer/services/uploadGraphData'

    for i in json_file_name:
            json_data = open (i, 'r')
            lines=json_data.readlines()
            req = urllib2.Request(url)
            req.add_header('Content-Type','application/json')
            data = json.dumps(lines)
            response = urllib2.urlopen(req,data)
以下是错误:

raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 500: Internal Server Error
输入文件示例:

{
 "username": "xxxxx",
 "password": "yyyyy",
 "timeSeriesName": "Liberia_01-18-2015",
 "dataType": "Cases",
 "plotType": "Cumulative",
 "filename": "C_C.csv",
 "dateFormat": "MM-dd-yy",
 "forecastedOn": "01/18/2015",
 "visibility": "Public",
 "data": {
    "01-25-2015":"26 38 14",
    "02-01-2015":"22 33 11",
    "02-08-2015":"19 32 6",
    "02-15-2015":"17 32 2",
    "02-22-2015":"15 18 12",
    "03-01-2015":"14 26 2"
 }
}
我认为代码不能正确地解析我的输入文件。您对解决方案有什么想法吗?

您的文件已经编码为JSON。您不需要再次对其进行编码。不更改发送文件:

for name in json_file_name:
    with open(name) as json_data:
        data = json_data.read()
        req = urllib2.Request(url, data, {'Content-Type': 'application/json'})
        response = urllib2.urlopen(req)

500错误表示服务器进程在试图解析您的输入时崩溃。您的数据要么有额外的密钥,要么没有足够的密钥,要么您的数据以服务器无法预料的方式格式化

基于: lines=json_data.readlines() 及 data=json.dumps(行)

看起来您实际上还没有将数据转换为json对象,因此也无法从json中转储数据。尝试替换:

json_data = open (i, 'r')
lines=json_data.readlines()
与:

您还应该使用比我更好的名称,并尝试/捕获与格式不正确的json文件相关的错误

此外,您会发现http API更容易使用请求库-请参见:

with open(i) as data_file: 
    json_data = json.load(data_file)