Python中的布尔运算符

And*_*ndy 1 python

为什么我不能这样做?

extout = os.path.splitext(args.outputfile)[1].lower()
if extout != (".csv" | ".xml"):  # <------- creates error
        sys.stderr.write('ERROR: Invalid extension or none found. This program only recognizes .csv or .xml extensions %s\n')
        sys.exit(1)
Run Code Online (Sandbox Code Playgroud)

这给了我一个类型错误:

Unsupported operand types for |: 'str' and 'str'
Run Code Online (Sandbox Code Playgroud)

Ash*_*ary 10

使用元组和not in:

if extout not in  (".csv", ".xml"):
Run Code Online (Sandbox Code Playgroud)

这将返回True如果extout没有匹配任何的元组的项目,否则False.

| 是python中的Bitwise OR运算符,这就是为什么它不处理字符串.