获取命令行参数作为字符串

时间:2016-06-06 12:58:54

标签: python command-line-arguments

我想将所有命令行参数打印为单个字符串。我如何调用我的脚本以及我希望打印的示例:

./RunT.py mytst.tst -c qwerty.c

mytst.tst -c qwerty.c

执行该操作的代码:

args = str(sys.argv[1:])
args = args.replace("[","")
args = args.replace("]","")
args = args.replace(",","")
args = args.replace("'","")
print args

我做了所有替换,因为sys.argv [1:]返回了这个:

['mytst.tst', '-c', 'qwerty.c']

有没有更好的方法来获得相同的结果?我不喜欢那些多次替换电话

4 个答案:

答案 0 :(得分:17)

选项:

import sys
' '.join(sys.argv[1:])

join()函数通过您调用它的任何字符串来连接其参数。所以' '.join(...)将参数与它们之间的单个空格(' ')连接起来。

答案 1 :(得分:2)

当您使用从第二个参数到最后一个参数的语法[1:]时,您将获得包含所有参数的列表对象。您可以为每个循环运行一个以将它们连接成一个字符串:

args = sys.argv[1:]
result = ''

for arg in args:
    result += " " + arg

答案 2 :(得分:1)

以上任何一个答案都不能正确地转义所有可能的参数,例如空参数或包含引号的参数。使用最少的代码可以获得的最接近的结果是使用shlex.quote(自Python 3.3起可用):

import shlex
cmdline = " ".join(map(shlex.quote, sys.argv[1:]))

答案 3 :(得分:0)

或者可以执行format,然后将字符串乘以sys.argv的长度:

(' {}'*len(sys.argv)).lstrip().format(*sys.argv)

或者可以执行%

(' %s'*len(sys.argv)).lstrip()%sys.argv