string instead list of strings
Как вы боретесь с тем, что в функцию случайно передали имя файла вместо списка имен файлов?
Мне приходится постоянно втыкать проверки на строки:
def get_files(exlude_dirs):
assert not (isintance(exclude_dirs, str) or isintance(exclude_dirs, unicode)) #жесткий вариант
if isintance(exclude_dirs, str) or isintance(exclude_dirs, unicode):
exclude_dirs = [exclude_dirs] #мягкий вариант
assert not hasattr(exclude_dirs, 'isalnum') #жесткая проверка, что оно не умеет крякать иначе нафиг
Периодически слышу забавные истории "питон удалил все файлы до которых дотянулся", когда строка c:/dir/ случайно воспринялась как список ['c', ':', '/', 'd', ...]
updated:
в комментариях заметили, что проверку можно упростить до if isinstance(..., basestring),
а параметры функции иногда можно естественно переписать как get_files(*excluded_dirs), что снижает вероятность передачи строки вместо списка.
Мне приходится постоянно втыкать проверки на строки:
def get_files(exlude_dirs):
assert not (isintance(exclude_dirs, str) or isintance(exclude_dirs, unicode)) #жесткий вариант
if isintance(exclude_dirs, str) or isintance(exclude_dirs, unicode):
exclude_dirs = [exclude_dirs] #мягкий вариант
assert not hasattr(exclude_dirs, 'isalnum') #жесткая проверка, что оно не умеет крякать иначе нафиг
Периодически слышу забавные истории "питон удалил все файлы до которых дотянулся", когда строка c:/dir/ случайно воспринялась как список ['c', ':', '/', 'd', ...]
updated:
в комментариях заметили, что проверку можно упростить до if isinstance(..., basestring),
а параметры функции иногда можно естественно переписать как get_files(*excluded_dirs), что снижает вероятность передачи строки вместо списка.
