Python if语句在false和tru上执行

2024-09-30 16:37:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我的脚本中有些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变量。我做错什么了?你知道吗


Tags: 代码inpy脚本ifitenum语句
1条回答
网友
1楼 · 发布于 2024-09-30 16:37:28
if devicelist == "snum" or "enum":

永远都是真的。你知道吗

编译器将检查以下内容:

if (devicelist == "snum") or "enum":

第一个检查是False,而将"enum"强制转换为布尔值的第二个检查总是True。你知道吗

解决方法:

if devicelist in ("snum", "enum"):

相关问题 更多 >