Я работаю над скриптом для автоматизированного рабочего процесса. Он ожидает, что CSV и образ диска будут присутствовать в каталоге, который поставляется как args.input.Как сделать эту функцию более эффективной для питона?
Я хочу проверить и обработать все возможные сценарии: нет CSV, никакого образа диска, слишком много CSV, слишком много образов дисков и любая возможная комбинация с ними.
Я написал нижеследующее, которое работает и кажется читаемым человеком, но это кажется невероятно чрезмерным и многословным - есть ли способ сделать это более компактным, но все же сохранить его удобочитаемость?
# CONFORMANCE CHECKS
def check_conformance():
csv = glob.glob(args.input+'*.csv')
disk_image = glob.glob(args.input+'*.E01')
if len(csv) == 1:
does_csv_exist = os.path.isfile(csv[0])
elif len(csv) < 1:
does_csv_exist = False
elif len(csv) > 1:
does_csv_exist = "too many CSVs!"
if len(disk_image) == 1:
does_E01_exist = os.path.isfile(disk_image[0])
elif len(disk_image) < 1:
does_E01_exist = False
elif len(disk_image) > 1:
does_E01_exist = "too many Disk Images!"
if len(disk_image) > 1 and len(csv) > 1:
does_csv_exist = "too many CSVs!"
does_E01_exist = "too many disk images!"
return (False, does_csv_exist, does_E01_exist,)
if does_E01_exist is True and does_csv_exist is True:
return True
elif does_E01_exist is True and does_csv_exist is False:
return (False, "CSV is missing")
elif does_E01_exist is False and does_csv_exist is True:
return (False, "E01 disk image is missing")
elif does_E01_exist is False and does_csv_exist is False:
return (False, "E01 disk image AND csv are missing")
elif does_csv_exist is not True and does_csv_exist is not False:
return (False, does_csv_exist)
elif does_E01_exist is not True and does_E01_exist is not False:
return (False, does_E01_exist)
Этот вопрос может быть лучше подходит для [codereview.se]. Однако, конечно, это не похоже на Pythonic. – jonrsharpe
Не знал об этом SE - отлично. Будет опубликован там. – dongle
[Перекрестная ссылка] (http://codereview.stackexchange.com/q/120350/9357) по обзору кода. –