我正在使用lcov,我想从我的覆盖率报告中排除一些文件/目录。
当我使用os.system((时:
os.system("lcov --remove build/unit_test_coverage.info '*test*' '*mock*' -o build/unit_test_coverage.info")
它排除了我所期望的文件/目录。
但是当我像这样使用subprocess.call((时:
subprocess.call(["lcov", "--remove", "build/unit_test_coverage.info", "'*test*'", "'*mock*'", "-o", "build/unit_test_coverage.info"])
文件/目录未排除在外。
有人知道为什么吗?
subprocess.call
默认情况下不使用shell,因此您不需要转义或保护"&";。这样做:
subprocess.call(["lcov", "--remove", "build/unit_test_coverage.info", "*test*", "*mock*", "-o", "build/unit_test_coverage.info"])
subprocess.call
的文档说查看Popen
的文档,看看参数是如何工作的。这里说,只有当您还指定shell=True
并给它一个字符串作为第一个参数时,才使用shell。还有一个";注释";挡在那里解释这些东西。