Python: цикл по всем параметрам - PullRequest
0 голосов
/ 09 мая 2018

Я написал код, который использует параметр в определенных именах файлов, местах и ​​т. Д. (Упрощенно ниже):

file_type = sys.argv[1]
[...]
parent_folder = 'C:/path/to/dir/'
input_folder = parent_folder + file_type + '_inventory'
output_folder = parent_folder + file_type + '_export'

Таким образом, параметр file_type может быть FOO, BAR или FOOBAR, и это будет определять, какие каталоги / файлы используются. Но я пытался найти более надежный способ включить ALL в этот параметр.

В настоящее время у меня есть операторы IF ELSE, где в одном варианте мой сценарий копируется несколько раз с каждым жестко заданным параметром выбора; когда file_type = ALL. Должен быть способ сделать так, чтобы он циклически проходил через набор значений / строк вместо дублирования кода, но я не смог найти его подобия.

Пожалуйста, дайте мне знать, если мне нужно подробнее уточнить.

1 Ответ

0 голосов
/ 10 мая 2018

Один из способов сделать это - всегда цикл по всей вашей программе, один раз для каждого типа файла. Если указан один тип файла, вы просто зацикливаетесь на этом одном типе, но если указано all, вы зацикливаетесь на всех из них.

Например, мы можем создать одноэлементный список всего [sys.argv[1]], за исключением случаев, когда он ALL:

file_types = [sys.argv[1]] if sys.argv[1] != 'ALL' else ['FOO', 'BAR', 'FOOBAR']
for file_type in file_types:
    [...]
    parent_folder = 'C:/path/to/dir/'
    input_folder = parent_folder + file_type + '_inventory'
    output_folder = parent_folder + file_type + '_export'
...