【发布时间】:2012-08-26 12:34:23
【问题描述】:
我有 Python 子进程调用,它们被格式化为一系列参数(例如 subprocess.Popen(['ls','-l']) 而不是单个字符串(即 subprocess.Popen('ls -l'))。
当像我一样使用顺序参数时,有没有办法获取发送到 shell 的结果字符串(用于调试目的)?
一种简单的方法是我自己将所有参数连接在一起。但我怀疑这在所有情况下都与子进程所做的相同,因为使用序列的主要原因是'allow[s] the module to take care of any required escaping and quoting of arguments'。
【问题讨论】:
-
subprocess带有一个list2cmdline函数,可将参数列表转换为单个字符串,同时处理空格和引号。对你有用吗? -
@Pierre:是的,这就是我想要的。我搜索了子流程文档页面(我链接到的那个),但不幸的是它没有提到它。如果您将您的建议放在答案中,我会将其标记为已接受。
-
在 Unix/Linux 上,没有“发送到 shell 的结果字符串”之类的东西。参数是单独发送的。字符串仅在 Windows 上构建。
-
@interjay:有趣,不知道这个。
标签: python subprocess