os.system 使用 lcov --remove 但 subprocess.call 不是
os.system working with lcov --remove but subprocess.call is not
我正在使用 lcov,我想从我的覆盖率报告中排除一些 files/directories。
当我使用 os.system():
os.system("lcov --remove build/unit_test_coverage.info \'*test*\' \'*mock*\' -o build/unit_test_coverage.info")
如我所料,它排除了 files/directories。
但是当我像这样使用 subprocess.call() 时:
subprocess.call(["lcov", "--remove", "build/unit_test_coverage.info", "\'*test*\'", "\'*mock*\'", "-o", "build/unit_test_coverage.info"])
不排除files/directories
有人知道为什么吗?
默认情况下,subprocess.call
不使用 shell,因此您无需转义或保护“*”。这样做:
subprocess.call(["lcov", "--remove", "build/unit_test_coverage.info", "*test*", "*mock*", "-o", "build/unit_test_coverage.info"])
subprocess.call
say to look at the docs for Popen
的文档以查看参数如何工作。那里说 shell 仅在您还指定 shell=True
并给它一个字符串作为第一个参数时才使用。那里还有一个“注释”块来解释这些东西。
我正在使用 lcov,我想从我的覆盖率报告中排除一些 files/directories。
当我使用 os.system():
os.system("lcov --remove build/unit_test_coverage.info \'*test*\' \'*mock*\' -o build/unit_test_coverage.info")
如我所料,它排除了 files/directories。
但是当我像这样使用 subprocess.call() 时:
subprocess.call(["lcov", "--remove", "build/unit_test_coverage.info", "\'*test*\'", "\'*mock*\'", "-o", "build/unit_test_coverage.info"])
不排除files/directories
有人知道为什么吗?
subprocess.call
不使用 shell,因此您无需转义或保护“*”。这样做:
subprocess.call(["lcov", "--remove", "build/unit_test_coverage.info", "*test*", "*mock*", "-o", "build/unit_test_coverage.info"])
subprocess.call
say to look at the docs for Popen
的文档以查看参数如何工作。那里说 shell 仅在您还指定 shell=True
并给它一个字符串作为第一个参数时才使用。那里还有一个“注释”块来解释这些东西。