У меня возникают проблемы с этим кодом getopt()
в script, который я пишу, который делает некоторые простые манипуляции с файлами, заданными 2 обязательными параметрами (имя входного файла и имя выходного файла) и/или 2 необязательных/ситуационных аргумента ( debug или help).
Код:
def main(argv):
try:
opts, args = getopt.getopt(argv, "i:o:dh", ["input-file=", "output-file=", "debug", "help"])
except getopt.GetoptError:
usage()
sys.exit(2)
for opt, arg in opts:
if opt in ("-h", "--help"):
usage()
sys.exit()
elif opt in ("-d", "--debug"):
global _debug
_debug = 1
elif opt in ("-i", "--input-file"):
u_input_file_name = arg
elif opt in ("-o", "--output-file"):
u_output_file_name = arg
Согласно документации getopt()
:
которые требуют аргумента, за которым следует двоеточие ('
:
', то есть тот же формат, который использует Unix getopt()).
Проблема заключается в том, что, насколько я понимаю, переменные /args, за которыми следует :
, должны выполняться по мере необходимости... но параметры i
и o
не применяются. Выполнение этого фрагмента завершает отправку ошибки о u_input_file_name
перед назначением:
[[email protected] ~/python]$ ./inco_add_cm_mpscli.py -o google
Traceback (most recent call last):
File "./inco_add_cm_mpscli.py", line 57, in <module>
main(sys.argv[1:])
File "./inco_add_cm_mpscli.py", line 25, in main
infile = open(u_input_file_name, 'r')
UnboundLocalError: local variable 'u_input_file_name' referenced before assignment
Что я делаю неправильно?