Python if语句在false和true上执行
我的脚本中的一些if语句有问题。我使用Python if语句在false和true上执行,python,Python,我的脚本中的一些if语句有问题。我使用/iojson.py“nodev”从终端运行,但代码仍然执行“enum”或“snum”的if语句,这导致脚本由于名称错误而停止 代码如下: devicelist = sys.argv[1] if devicelist == "snum" or "enum": if devicelist == "snum": print("It executed snum") with open('SNUM.txt') as f:
/iojson.py“nodev”
从终端运行,但代码仍然执行“enum”
或“snum”
的if语句,这导致脚本由于名称错误而停止
代码如下:
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
回溯(最近一次呼叫最后一次):
文件“/iojson.py”,第43行,在
content=[x.strip()表示内容中的x]
名称错误:未定义名称“内容”
但我的理解是,它不应该首先进入内容变量。我做错了什么
if devicelist == "snum" or "enum":
永远都是真的
这是编译器将检查的内容:
if (devicelist == "snum") or "enum":
第一个检查为False
,而将“enum”
强制转换为布尔值的第二个检查始终为True
解决方法:
if devicelist in ("snum", "enum"):
永远都是真的
这是编译器将检查的内容:
if (devicelist == "snum") or "enum":
第一个检查为False
,而将“enum”
强制转换为布尔值的第二个检查始终为True
解决方法:
if devicelist in ("snum", "enum"):
首先,这并不是你想的那样:如果devicelist==“snum”或“enum”:
,它将在第二个或条件下求值为true,因为它被视为或“enum”
将字符串转换为true
,如果devicelist==“snum”或“enum”,你需要:
第二,这里的上下文是在哪里定义的?@EdChum如果
的话,你对是正确的,但是你读的是上下文而不是内容
,它的值是content=f.readlines()
可能重复的井首先,这不是你所想的:如果设备列表==“snum”或“enum”:
,它将在第二个或
条件下求值为true,因为它被视为或'enum'
,它将字符串转换为true
,如果devicelist==“snum”或devicelist==“enum”,则需要:
第二,这里的上下文是在哪里定义的?@EdChum如果
的话,你的是对的,但是你读的是上下文而不是内容
,它的值是content=f.readlines()