我有以下函数,它读取 adict并影响局部变量的一些值,然后将其作为元组返回。
问题是字典中可能不存在某些所需的键。
到目前为止,我已经有了这段代码,它可以实现我想要的功能,但我想知道是否有更优雅的方法来实现它。
def getNetwork(self, search):
data = self.get('ip',search)
handle = data['handle']
name = data['name']
try:
country = data['country']
except KeyError:
country = ''
try:
type = data['type']
except KeyError:
type = ''
try:
start_addr = data['startAddress']
except KeyError:
start_addr = ''
try:
end_addr = data['endAddress']
except KeyError:
end_addr = ''
try:
parent_handle = data['parentHandle']
except KeyError:
parent_handle = ''
return (handle, name, country, type, start_addr, end_addr, parent_handle)
Run Code Online (Sandbox Code Playgroud)
我有点害怕很多,try: except:但如果我把所有的影响都放在一个单一的里面,try: except:一旦第一个缺失的字典键引发错误,它就会停止影响值。
我想重现以下 SNMP 命令的行为:
snmpwalk -v2c -cpublic 192.168.0.10 1.3.6.1.2.1.25.2.3.1.3
Run Code Online (Sandbox Code Playgroud)
这给了我这个输出:
iso.3.6.1.2.1.25.2.3.1.3.1 = STRING: "Physical memory"
iso.3.6.1.2.1.25.2.3.1.3.3 = STRING: "Virtual memory"
iso.3.6.1.2.1.25.2.3.1.3.6 = STRING: "Memory buffers"
iso.3.6.1.2.1.25.2.3.1.3.7 = STRING: "Cached memory"
iso.3.6.1.2.1.25.2.3.1.3.8 = STRING: "Shared memory"
iso.3.6.1.2.1.25.2.3.1.3.10 = STRING: "Swap space"
iso.3.6.1.2.1.25.2.3.1.3.31 = STRING: "/"
iso.3.6.1.2.1.25.2.3.1.3.37 = STRING: "/run"
iso.3.6.1.2.1.25.2.3.1.3.39 = STRING: "/dev/shm"
iso.3.6.1.2.1.25.2.3.1.3.40 = STRING: "/run/lock"
iso.3.6.1.2.1.25.2.3.1.3.41 = STRING: "/sys/fs/cgroup"
iso.3.6.1.2.1.25.2.3.1.3.59 = STRING: "/tmp"
iso.3.6.1.2.1.25.2.3.1.3.60 = STRING: "/run/cgmanager/fs"
iso.3.6.1.2.1.25.2.3.1.3.61 = STRING: "/run/user/112"
iso.3.6.1.2.1.25.2.3.1.3.63 = STRING: "/run/user/0"
Run Code Online (Sandbox Code Playgroud)
所以我尝试了这个代码:
#!/usr/bin/env python3
from pysnmp.hlapi …Run Code Online (Sandbox Code Playgroud) 我有以下JS:
\n\ndocument.getElementById(\'sketchpad-post\').setAttribute(\'value\',\'\')\nRun Code Online (Sandbox Code Playgroud)\n\nHTML 输入如下:
\n\n<input type="text" id="sketchpad-post" autocomplete="off" value="" placeholder="Message"/>\nRun Code Online (Sandbox Code Playgroud)\n\n如果 setAttribute 函数的第二个参数是空字符串(如上面的示例所示),则它不起作用:它不会清空文本字段(文本字段具有先前设置的值) )。
\n\n现在,如果第二个参数是非空字符串,那么它就可以工作:它将我的文本字段设置为提供的值。
\n\n我发现这种行为特别奇怪\xe2\x80\xa6
\n\n我尝试强制执行 autocomplete="off" (甚至 autocomplete="flu") 执行 setAttribute 并执行removeAttribute(\'value\') 但当用户显示它时我仍然无法设法将此字段留空。
\n\n作为解决方法,我可以将该值设置为一种占位符,例如 \'\xe2\x80\xa6\' 或任何其他字符(可能是不可破坏的空格?),但 \xe2\x80\x99s 不太好。
\n\n我在最新的 Chrome (Chromium) 和 Firefox 中都有这种行为。
\n\n任何想法 ?
\n我使用python创建了一些sqlite表架构。
当我使用sqlite3客户端并发出.schema命令时,我可以看到输出已预先格式化,如用作该executescript()函数参数的SQL源文件中所示。
有什么方法可以用来格式化.schema命令的输出?