实际上,我正在尝试将下面的代码传递给bash。但我认为%s的tshark和pythonic的%s是混合在一起的。它没有给出足够的参数格式字符串错误。你知道吗
def traffic_dest_port(self,filepcap):
cmd = "tshark -o column.format:'\"Source\", \"%s\", \"Destination\", \"%d\", \"dstport\", \"%uD\"' -r %s |sort|uniq " %filepcap
subprocess.call(cmd,shell=True)
你能帮我解决这个问题吗?你知道吗
谢谢。你知道吗
你的猜测是对的。Python的
%
操作符将尝试替换字符串中的每个说明符,而不仅仅是其中的一些说明符。因为它找到了4个%
说明符,并且只有一个值,所以它会说TypeError: not enough arguments for format string
。你知道吗但是,即使它没有,你怎么能指望它猜出你想让它在这四个中替换哪一个呢?我是一个人,甚至连猜都有困难,所以如果我猜错了,希望你能想出如何调整答案以满足你的需要。你知道吗
解决这个问题的一种方法是通过将百分比加倍来避开您不希望Python处理的百分比:
如^{}-style String Formatting 文档中所述,说明符
%%
表示“不转换任何参数,结果是结果中的'%'
字符。”如果你打印出结果(当你试着调试这样的东西时,你总是应该这样做!),您将看到
%s
已被filepcap
值替换,但%%s
已变成%s
。你知道吗然而,一个更简单的解决方案是使用不同的格式化机制,它不需要} :
%
,比如^{相关问题 更多 >
编程相关推荐