Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python if语句在false和true上执行_Python - Fatal编程技术网

Python if语句在false和true上执行

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:

我的脚本中的一些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:
            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()