Я пытаюсь передать входной аргумент в качестве переменной для скрипта Python. В начале все хорошо, и я получаю переменную в методе main. Однако переменная всегда меняется на «False» при попытке использовать ее в других функциях (не в основной функции). Как сделать копию логической входной переменной, чтобы значение сохранялось по всему сценарию?
Вот мой код:
import sys
import json
import os
import argparse
import logging
import datetime
import time
from csv import DictReader
EXECUTION_MODE_FORCE_UPDATE = False
def main():
start_time = time.time()
parser = argparse.ArgumentParser(description='Process some value.')
parser.add_argument('--input_file', required=True, help="input file (csv)")
parser.add_argument('--force_update', required=True, help="Choose if you want to use the execution-mode = FORCE UPDATE or not. Takes values: True or False")
args = parser.parse_args()
EXECUTION_MODE_FORCE_UPDATE = args.force_update
if EXECUTION_MODE_FORCE_UPDATE.lower() == 'true':
EXECUTION_MODE_FORCE_UPDATE = True
elif EXECUTION_MODE_FORCE_UPDATE.lower() == 'false':
EXECUTION_MODE_FORCE_UPDATE = False
print('EXEC: ', EXECUTION_MODE_FORCE_UPDATE)
input_file = '/home/blablabla/' + args.input_file
update_input(input_file, EXECUTION_MODE_FORCE_UPDATE)
end_time = (time.time() - start_time)/60
print('Script total execution time: {} min'.format(end_time))
def update_input(file_path, EXEC_MODE):
EXECUTION_MODE_FORCE_UPDATE = EXEC_MODE
print('EXECMODE2: ', EXECUTION_MODE_FORCE_UPDATE)
nextMethod(param1, param2)
def nextMethod(param1, param2):
if not EXECUTION_MODE_FORCE_UPDATE:
print('EXEC_MODE False: ', EXECUTION_MODE_FORCE_UPDATE)
if EXECUTION_MODE_FORCE_UPDATE:
print('EXEC_MODE True: ', EXECUTION_MODE_FORCE_UPDATE)
Теперь при выполнении моего скрипта используйте:
python /home/blablabla/myScript.py --input_file testInput.csv --force_update True
При печати логического значения, указанного в качестве входного значения EXECUTION_MODE_FORCE_UPDATE в функциях main () или update_input (), я получаю значение True, что правильно! Но когда я печатаю это в функции nextMethod (), я получаю False. На самом деле это упрощенный пример, у меня есть много других функций между ними, пока я не приду к последней функции, где мне нужна переменная bool. Таким образом, передача этой переменной bool всем функциям в пути является довольно грязной. Как сохранить его как (глобальную?) Переменную и использовать его позже в функции, где мне нужно в конце сценария элегантным способом?