如何忽略警告,仅将命令错误输出至stderr文件
解决pip2安装时仅保留权限错误、排除Python2.7弃用警告的方法
你遇到的问题很典型——Python2.7的弃用警告总会和真正的错误信息混进日志文件里。这里有两种靠谱的解决思路,帮你精准捕获权限拒绝的错误:
方法1:通过Python环境变量直接禁用弃用警告
Python本身提供了环境变量来管控警告输出,我们可以直接忽略DeprecationWarning类的提示,这样执行pip2时就不会输出弃用相关内容了:
PYWARNINGS="ignore::DeprecationWarning" pip2 install 0wned 2> error.txt
执行后error.txt里只会留下权限拒绝的错误信息,完美过滤掉弃用警告。
方法2:用shell过滤工具实时筛选错误行
如果你不想修改环境变量,也可以借助grep工具实时过滤stderr的内容,只保留包含权限错误的行(比如关键词"Permission denied"):
pip2 install 0wned 2>&1 >/dev/null | grep -i "permission denied" > error.txt
简单拆解下这个命令:
2>&1:把stderr的内容重定向到stdout>/dev/null:丢弃原本的stdout内容(比如安装过程的正常日志)grep -i "permission denied":忽略大小写匹配权限错误的行- 最后把匹配到的内容写入
error.txt
如果你的权限错误提示关键词不同,可以调整grep里的匹配字符串,比如换成"PermissionError"之类的。
最后补一句:Python2.7早就停止维护了,建议尽量迁移到Python3版本,从根源上避免这类弃用警告问题哦~
内容的提问来源于stack exchange,提问作者behzad mehrabi




