【发布时间】:2010-12-12 13:29:45
【问题描述】:
我在 Windows XP 上使用带有 C30 工具链的原始 IDE(Microchip MPLAB)。 C 编译器的输出非常嘈杂,我无法控制,而且很难在输出窗口中发现实际的警告和错误。
我想编写一个python脚本,它可以接收编译器的参数,用相同的参数调用编译器,过滤结果并将它们输出到stdout。然后我可以在工具链设置中用我的脚本替换编译器可执行文件。 IDE 调用我的脚本并接收过滤后的编译器输出。
我执行编译器的代码如下所示:
arguments = ' '.join(sys.argv[1:])
cmd = '%s %s' % (compiler_path, arguments)
process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
问题是脚本执行时会消耗参数中的引号,因此如果 IDE 使用以下参数调用我的脚本:
main.c -o"main.o"
参数的值是
main.c -omain.o
最明显的解决方案是将整个参数列表放在引号中,但这需要在 IDE 中修改编译器调用代码。我也尝试过使用批处理文件,但它只能接受九个参数(%1 到 %9),并且编译器被调用了 15+ 个参数。
有没有办法将完全相同的参数从脚本转发到进程?
【问题讨论】:
-
一个批处理文件可以接受10多个参数,查一下SHIFT的使用
标签: python process arguments quotes command-line-arguments