Skip to main content
 首页 » 编程设计

python之Pylint E1103 误报

2025年05月04日10zhenyulu

在我之前的问题 ( "Pylint E0202 False Positive?" ) 之后,这里是另一个问题(我想很具体)

我们正在使用模块子流程来执行子流程。
创建示例代码会产生以下结果:

"Example code for E1103" 
 
import subprocess 
 
pipeOpen = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True) 
 
(responseData, errorData) = pipeOpen.communicate() 
 
print "Error code: '%s'. Error data: '%s'" % (pipeOpen.returncode, errorData.strip("\n").strip("\r")) 

虽然 Pylint 会说:

E1103: 9,67: Instance of 'list' has no 'strip' member (but some types could not be inferred)

查看 pipeOpen.communicate() 它会下降到 _communicate。事实上,stderr 被初始化为一个列表,但是,在返回之前,如果 self.universal_newlines 为真,那么它会将列表转换为带有换行符的字符串。

这是 #pylint: ignore-msg=E1103 的情况还是最好向 pylint 开发人员报告?

请您参考如下方法:

好吧,如果 print(pipeOpen.universal_newlines and hasattr(file, 'newlines')) 返回 True 并且您在实际运行代码时没有收到任何错误, 那么你应该将此报告给 pylint 开发人员 + 同时忽略该消息