os.system使用lcov--remove,但subprocess.call不是



我正在使用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。还有一个";注释";挡在那里解释这些东西。

最新更新