我在脚本中遇到一些if语句时遇到问题。我使用./iojson.py "nodev"
从终端运行,但代码仍然执行"enum"
或"snum"
的if语句,这导致我的脚本因NameError
而停止。
代码如下:
devicelist = sys.argv[1]
if devicelist == "snum" or "enum":
if devicelist == "snum":
print("It executed snum")
with open('SNUM.txt') as f:
content = f.readlines()
if devicelist == "enum":
print("It executed enum")
with open('ENUM.txt') as f:
content = f.readlines()
content = [x.strip() for x in content]
devices = ''.join(content)
data['attachments'].append({
'fields' : [{
'title' : 'Serial numbers:',
'value' : devices
}]
})
elif devicelist == "nodev":
print("It executed nodev")
pass
执行后,响应为:
Traceback (most recent call last):
File "./iojson.py", line 43, in <module>
content = [x.strip() for x in content]
NameError: name 'content' is not defined
我的理解是,它首先应该永远不会得到content
变量。我做错了什么?
答案 0 :(得分:3)
if devicelist == "snum" or "enum":
永远是真的。
这是编译器将检查的内容:
if (devicelist == "snum") or "enum":
第一项检查是False
,而第二次检查是否将"enum"
转换为布尔值始终为True
。
解决方法:
if devicelist in ("snum", "enum"):