Python -- 子进程打开并调用相同的错误 -- none 类型不可迭代?

Python -- subprocess popen and call same error -- none type not iterable?

我一直在使用 os.system 作为 shell 命令,直到我发现它已被弃用。所以我试图切换到使用子流程。这是我的用途:

command = genConfig.MODETECT_SWITCH_COMMAND.append(state)
subprocess.Popen(command, stdout=subprocess.PIPE).communicate()[0]

MODETECT_SWITCH_COMMAND = ["zmpkg.pl"]

和一些常规 ping:

command = genConfig.PING_COMMAND.append(host)
response = subprocess.Popen(command, stdout=subprocess.PIPE).communicate()[0]
if "unreachable" in response or "timed out" in response:
    response = False
else:
    response = True
    break

PING_COMMAND = ["ping", "-c 1 -W 1"]

无论我在哪里做这些事情,我都会收到这个错误:

...tracebacks...
  File "/usr/lib/python2.7/subprocess.py", line 1198, in _execute_child
    args = list(args)
TypeError: 'NoneType' object is not iterable

而且我不明白为什么。我重新检查了我对 subprocess.popen 多个地方的使用,它似乎是正确的。我可能做错了什么?谢谢。

你有这个:

MODETECT_SWITCH_COMMAND = ["zmpkg.pl"]

当你这样做时:

command = genConfig.MODETECT_SWITCH_COMMAND.append(state)

您正在将 list.append 调用的输出分配给 command,该调用在 returns None 中运行。

也就是说,您似乎正在分配 command = None

subprocess 模块很困惑,因为它期望第一个位置参数是可迭代的,而不是 None