python - 在 Python 中发布一个二维数组
问题描述
这是我的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 中执行此操作以获得等价物?显然我的目标是最简单的方法。谢谢。
解决方案
两步:
- 制作
log
alist
而不是 adict
:
log = [wrapper + log_line for log_line in log_lines[1:]]
或为其他目的保留循环:
log = []
for log_line in log_lines[1:]:
log.append(wrapper + log_line)
- 在
package
中,将键更改log
为log[]
:
package['log[]'] = log
默认情况下,会将(列表)requests
序列化为发布数据,因此只需将空括号添加到键即可以 PHP 可以理解的方式对其进行格式化。log
log=hello&log=world&log=sample
推荐阅读
- angular - Angular 6 - 如何使用按钮从另一个组件切换 sidenav
- android - BroadcastReceiver和Activity之间使用接口通信
- angular - 扩展的primeng表不显示表的行
- python-3.x - 为什么我的张量板显示已停止输出?
- python - 将 'print()' 和 'os.system' 重定向到日志文件,同时保持控制台中的原始输出
- git - 如何从主分支中的还原提交中获取更改
- javascript - 使用本地存储重新加载页面时如何更新输入值?
- reactjs - React 16.7 受保护的路由
- qt - 在 Qt 中发布图像时如何添加请求正文?
- php - Onclick 按百分比获胜并显示数字