ПОСТИНГ двумерного массива в Python - PullRequest
0 голосов
/ 06 апреля 2020

вот мой 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, чтобы получить эквивалент? Очевидно, моя цель - самый простой способ. Благодаря.

1 Ответ

1 голос
/ 06 апреля 2020

Два шага:

  1. Сделать log list вместо dict:
log = [wrapper + log_line for log_line in log_lines[1:]]

или сохранить значение oop для других целей:

log = []
for log_line in log_lines[1:]:
    log.append(wrapper + log_line)
В package измените ключ для log на log[]:
package['log[]'] = log

По умолчанию requests сериализует log (список) на log=hello&log=world&log=sample как данные для публикации, поэтому форматирование так, чтобы PHP могло понять, что этого можно достичь, просто добавив пустые скобки к ключу.

Аналогичные вопросы и ответы: { ссылка }

...