在Python中发布二维数组

问题描述 投票:0回答:1

这是我的python文件

import sys
import requests

wrapper = "[Python Storage LogReader v2.b001] "
log = {}
log_lines = sys.argv
index = 0
for line in log_lines[1:]:
    error_log = wrapper + line
    log[index] = error_log
    index += 1

package = {}
package['test1'] = 'A'
package['test2'] = 'B'
package['log'] = log
success = requests.post('http://localhost:3000/post.php', package, False)

我这样称呼它:

python LogReader.py hello world sample

并且作为$_POST数组接收的输出是这个:

Array (
    [test1] => A
    [test2] => B
    [log] => 2
)

其中“ 2”是传递的参数的二进制数(我已经通过更改参数数来验证)。我想要的是:

Array (
    [test1] => A
    [test2] => B
    [log] => Array (
        [0] => hello
        [1] => world
        [2] => sample
    )
)

我是Python的新手,但熟悉PHP及其解析$_POST字符串的方式。本质上,我要发送的是:

test1=A&test2=B&log[]=hello&log[]=world&log[]=sample

我如何在Python中做到这一点,以便获得等效结果?显然,我的目标是最简单的方法。谢谢。

python post multidimensional-array python-requests
1个回答
0
投票

两步:

  1. 使loglist而不是dict
log = [wrapper + log_line for log_line in log_lines[1:]]

或为了其他目的保留循环:

log = []
for log_line in log_lines[1:]:
    log.append(wrapper + log_line)
  1. package中,将log的键更改为log[]
package['log[]'] = log

[默认情况下,requests会将log(列表)序列化为log=hello&log=world&log=sample作为发布数据,因此可以通过将PHP理解的方式进行格式化即可,只需在键上添加空括号即可。

类似的问与答:https://stackoverflow.com/a/23347265/8547331

© www.soinside.com 2019 - 2024. All rights reserved.