有没有办法获得使用subprocess.call时执行的完整命令行?

时间:2015-07-20 23:50:00

标签: python python-2.7

我正在使用subprocess.call,你只需要给它一个参数数组,它将构建命令行并执行它。

首先是否涉及任何逃避? (例如,如果我将参数作为参数传递给其中包含空格的文件,/path/my file.txt会对其进行转义吗?"/path/my file.txt"

有没有办法让这个命令行在执行之前生成(在转义之后)?

因为我需要检查生成的命令行是否不超过一定数量的字符(以确保它在执行时不会出错)。

1 个答案:

答案 0 :(得分:2)

如果您没有使用shell=True,则实际上并未涉及“命令行”。 subprocess.Popen只是将您的参数列表传递给基础execve()系统调用。

同样地,没有转义,因为没有涉及shell,因此没有什么可以解释特殊字符,也没有任何东西可以尝试对你的字符串进行标记。

没有字符限制需要担心,因为参数永远不会连接到单个命令行中。最大参数数量和/或单个参数的长度可能存在限制。

如果 使用shell=True,则必须先自行构建命令行,然后再将其传递给subprocess