Вы называли 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()
выполнить несколько подобных тестов является использование list comprehension или generator expression:
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 ...
Для оператора просто введите 'или'. И поставьте ':' в конце вашего 'if'. 'if filename.endswith ('. Txt') или filename.endswith ('. Sm3dump'):' вы можете быстро найти это с помощью google, хотя ... – swenzel