您any()
使用两个参数进行了调用:
any(filename.endswith('.txt'), filename.endswith('.sm3dump'))
# <----- argument #1 -----> <------- argument #2 ------->
...但它只需要一个,它必须是可迭代的(列表、元组等):
any([filename.endswith('.txt'), filename.endswith('.sm3dump')])
# <-------------- one list with two elements -------------->
如果您想or
改用,这很简单:
filename.endswith('.txt') or filename.endswith('.sm3dump')
any()
用于执行多个类似测试时的一个常见习惯用法是使用列表推导式或生成器表达式:
any([filename.endswith(ext) for ext in ('.txt', '.sm3dump')])
# <----------------- list comprehension ----------------->
any(filename.endswith(ext) for ext in ('.txt', '.sm3dump'))
# <-------- generator expression (no brackets) -------->
尽管在这种情况下,您实际上可以向 提供一个字符串元组str.endswith()
,它会检查它们:
filename.endswith(('.txt', '.sm3dump'))
无论您使用哪种测试,您都需要记住以if
冒号结束您的语句:
if filename.endswith(('.txt', '.sm3dump')):
# do something ...