我想将所有命令行参数打印为单个字符串。我如何调用我的脚本以及我希望打印的示例:
./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']
有没有更好的方法来获得相同的结果?我不喜欢那些多次替换电话
答案 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