在我之前的问题 ( "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 开发人员 + 同时忽略该消息
