我想将所有命令行参数打印为一个字符串。我如何调用脚本以及我希望打印的内容的示例:
./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']
有没有更好的方法得到同样的结果?我不喜欢那些多次更换电话
前面的任何答案都不能正确地转义所有可能的参数,如空参数或包含引号的参数。使用最少的代码可以得到的最接近的结果是使用shlex.quote(从Python3.3开始提供):
编辑
以下是与Python2+3兼容的解决方案:
一种选择:
join()
函数通过调用任何字符串来连接其参数。所以' '.join(...)
用它们之间的单个空格(' '
)连接参数。命令行参数在发送到
sys.argv
之前已由shell处理。因此,shell引用和空白都消失了,无法完全重建。假设用户使用带空格的双引号字符串,这里有一个python程序用这些引号重建命令字符串。
例如,命令行
将生成与输出相同的参数:
因为用户实际上只使用带字符串的双引号参数。
相关问题 更多 >
编程相关推荐