0
我在脚本中遇到了一些if语句的问题。我使用./iojson.py "nodev"
从终端运行,但代码仍然执行if语句"enum"
或"snum"
,这导致我的脚本因NameError
而停止。Python if语句在false上执行,并且为true
的代码如下:
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
变量。我究竟做错了什么?
那么首先这不是做你想:'如果DEVICELIST ==“SNUM”或“枚举”:',它会评估为true第二'或'条件因为它被看作是'或'enum'',它将字符串转换为'True',你想要'如果devicelist ==“snum”或devicelist ==“enum”:'第二,在这里定义了上下文的位置? – EdChum
@EdChum你对'if'正确,但你已经阅读上下文,而不是'content',它的值是'content = f.readlines()' – WhatsThePoint
可能重复[如何测试一个变量对多个值?]( http://stackoverflow.com/questions/15112125/how-do-i-test-one-variable-against-multiple-values) – Lafexlos