如何解决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
默认情况下不使用外壳程序,因此您无需转义或保护“ *”。这样做:
subprocess.call(["lcov","--remove","build/unit_test_coverage.info","*test*","*mock*","-o","build/unit_test_coverage.info"])
subprocess.call
的文档表示要查看Popen
的文档以查看参数如何工作。那里说只有在您还指定shell=True
并给它一个字符串作为第一个参数的情况下,才使用外壳程序。那里还有一个“注释”块来解释这些内容。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。