python - 从命令获取对象,以便它可以在条件逻辑中使用
问题描述
非常基本的问题和概念,我不知道答案。我正在使用Clamd 1.0.2,在示例中它在使用 CLI 时显示以下内容:
>>> import clamd
>>> cd = clamd.ClamdUnixSocket()
>>> cd.ping()
'PONG'
>>> cd.version() # doctest: +ELLIPSIS
'ClamAV ...
>>> cd.reload()
'RELOADING'
>>> open('/tmp/EICAR','wb').write(clamd.EICAR)
>>> cd.scan('/tmp/EICAR')
{'/tmp/EICAR': ('FOUND', 'Eicar-Test-Signature')}
我希望能够获取对象cd.scan('/tmp/EICAR')
创建并在条件下使用它。类似的东西:if FOUND then send email to administrator and notify the user
。
我只是不明白如何访问创建的对象。你如何访问它?使用 Python 3.6.5。
解决方案
>>> cd.scan('/tmp/EICAR')
{'/tmp/EICAR': ('FOUND', 'Eicar-Test-Signature')}
cd.scan('/tmp/EICAR')
返回字典。您可以通过键访问字典中的值。在这种情况下,关键是/tmp/EICAR
。该键的值是一个元组。要访问元组的成员,您可以像使用数组 - 一样进行操作tuplename[index]
。
result = cd.scan('/tmp/EICAR')
if (result['tmp/EICAR'][0] == 'FOUND'):
print("Send email")
同样,'Eicar-Test-Signature'
这种情况下的值可以通过result['tmp/EICAR'][0]
. cd.scan
我不知道该函数的副作用是什么,但是您可以result
完全绕过该变量并仅使用cd.scan('/tmp/EICAR')['/tmp/EICAR'][1]
to 访问'Eicar-Test-Signature'
.
请记住,如果cd.scan
函数失败或返回的内容与您期望的不同,则密钥/tmp/EICAR
可能不在字典中(我不知道clamd
库是如何工作的或它是做什么的)。在这种情况下,您可以像这样检查字典中是否存在键:
if '/tmp/EICAR' in result:
print('key is present')
推荐阅读
- r - R函数计算满足条件的行
- sql - 在 postgres 中将类型转换为 int
- java - SpeechRecognizer 的 OnResult() 方法中的 get(0) 有什么用?
- c - 如何使斐波那契数列打印出单个数字
- python - 为什么 virtualenv(版本 20)比 python3 -m venv 快得多
- websphere - 如何将配置 websphere 同步到其他站点 DR?
- cygwin - 如何让cygwin更快?
- vbscript - 如何使用用户输入 VBScript 编辑 .ini 文件中的字符串
- emacs - 使全局次要模式缓冲区本地
- reactjs - 当 ReactJS 中已经有 proptypes 时,如何将函数从父级传递给子级