python 3 如何将多维数组数据发送到 subprocess.call()

python 3 How do I send multidimentional array data to a subprocess.call()

我有一个shell命令,我需要发送一个多维数组作为参数。

subprocess.call(['rndc', 'addzone', domain, 'in', 'external', '"{type master; auto-dnssec maintain; inline-signing yes; key-directory \"/home/ex-mailer-domains/domain.com/\"; file \"/home/ex-mailer-domains/domain.com/domain.com.external\"; update-policy { grant ddns-key zonesub ANY; };};"'

subprocess.call(['rndc', 'loadkeys', domain])

我收到的错误:

[\u@yoda:/usr/local/etc/namedb] # python3.4 makedomain3.py mylabel domain.com 108.61.169.203 255.255.254.0 2001:19f0:5800:8561:5400:00ff:fe07:cae5 1
  File "makecustdomain3.py", line 249
    subprocess.call(['rndc', 'loadkeys', domain])
             ^
SyntaxError: invalid syntax

shell中的实际命令:

rndc addzone domain.com in external '{type master; auto-dnssec maintain; inline-signing yes; key-directory "/home/ex-mailer-domains/domain.com/"; file "/home/ex-mailer-domains/nyctelecomm2.com/domain.com.external"; update-policy { grant ddns-key zonesub ANY; };};'
rndc loadkeys domain.com

如何正确地将多维数组数据作为参数传递给 python3 中的 subprocess.call()?

我认为您未能关闭之前的通话。您发布的第一个调用以 "' 结尾;这些关闭了结构字符串,但您仍然需要右括号和右括号。

解析器在以下标记的末尾检测到这一点;从句法上讲,它应该看到右括号或另一个逗号。