簡體   English   中英

Python if語句在false和true上執行

[英]Python if statement executes on false, and true

我在腳本中使用某些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變量。 我究竟做錯了什么?

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

永遠是真的。

這是編譯器將檢查的內容:

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

第一個檢查為False ,而第二個將"enum"轉換為布爾值的檢查始終為True

解決方法:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM