如何检查传递给 subprocess.Popen 进程处理程序的实际参数列表?

How to check actual list of arguments being passed to subprocess.Popen process handler?

我正在使用 Python 并使用 subprocess.Popen 调用系统调用。我正在传递相当长的字符串,即 subprocess.Popen 参数下的 self.description 值,如下所示。

firstProcess = subprocess.Popen(["echo",self.description], stdout=subprocess.PIPE)

但是,我收到此错误消息:Argument list too long

  File "/usr/lib/python3.5/subprocess.py", line 1551, in _execute_child
    raise child_exception_type(errno_num, err_msg)
OSError: [Errno 7] Argument list too long

根据 'self.description' 字符串的内容,上述代码有时有效,有时无效。

我如何通过强制 subprocess.Popenself.description 视为一个字符串来使上述代码工作,或者我如何打印实际传递给 [=20 的参数值列表=] 方法,因为它看起来像 self.description 被拆分成多个参数并传递给 subprocess.Popen 方法?

我认为您可以使用 shlex.quote() 函数来正确引用 self.description 参数,以便将其作为参数传递。

请注意,您最好将数据通过管道传输到另一个进程,因为数据太多了。