如何在Python中获取ORIGINAL命令行?有空格,标签等

时间:2011-05-31 08:33:47

标签: python command-line

  

可能重复:
  Full command line as it was typed

sys.argv已经是一个解析过的数组,丢失了双引号,双倍空格甚至可能是制表符(当然,这取决于OS / shell)。

如何在解析之前访问原始字符串?

3 个答案:

答案 0 :(得分:3)

很快,你没有。

Long:在Unix命令行上由调用程序解析,并且在python启动时你已经解析了命令行。

PS。在Windows上它是可能的,但我想你正在寻找一般的回应。

答案 1 :(得分:0)

你不能明确地这样做,因为这就是shell将参数传递给程序的方式。

答案 2 :(得分:0)

sys.argv是Python得到的。 shell在将参数传递给Python进程之前处理了文件名生成(globs),参数(变量)扩展,引号和单词拆分(在Unix中;在Windows中它是启动实际解析它,但是为了便携性,你不能依靠那个)。

但是,请记住,POSIX shell引用规则允许传递您可能想要的任何字符(除了终止字符串的NUL字节)。

比较使用subprocess.call使用shell参数设置或不使用shell=False参数创建Python的过程。使用sys.argv字符串列表是在启动过程中shell=True中出现的内容(从脚本路径开始; Python本身处理的参数被删除),而{{1}}字符串是传递给shell,根据自己的规则解释它。