У меня есть два сценария Python. Основной скрипт вызывает generate.py, у которого есть основная функция, которая принимает 3 аргумента из argsparse. То, что я пытаюсь сделать, это импортировать generate.py в main.py. Вызовите функцию main из generate.py, но передайте ей три аргумента, чтобы она могла выполнить функцию main с этими аргументами.
Три аргумента: путь, файлы и данные.
Путь - это просто путь к данным
файлы, по сути, для цикла цикла через файлы в каталоге
data - это папка с файлами json
Пока мой скрипт main.py выглядит следующим образом. :
def get_json_location(username=os.getlogin()):
first = "/Users/"
last = "/Desktop/data-code/Testdata"
result = first + username + last
return result
def get_config():
parser = argparse.ArgumentParser()
parser.add_argument("-p", "--parameter-file", action="store", required=False)
parser.add_argument("-e", "--export-data-file", action="store", required=False)
parser.add_argument("-d", "--export-date", action="store", required=False)
args = parser.parse_args()
return [args.parameter_file, args.export_data_file, args.export_date]
path, files, data = get_config()
date = get_config()[2]
yml_directory = os.listdir('yaml')
yml_directory.remove('export_config.yaml')
def generate_json():
with open('dates/' + date + '.json', 'w') as start:
start.close()
for yml in yml_directory :
print("Running export for " + yml)
# Here is the script that i am calling but i want to pass the parameters path , file and data_folder
gen_json.main(path,files,data)
if __name__ == '__main__':
generate_json()
generate.py выглядит следующим образом:
def main(get_config):
cfg = get_config()[0] # json location
data = get_config()[1] # export_agent_core_agent.yaml
date = get_config()[2] # synthetic data folder - YYYY-MM-DD
json_location = cfg
json_database = data["config"]["database"]
json_collection = data["config"]["collection"]
json_path = "{0}/{1}{2}/{3}/{3}.json".format(json_location, date, json_database, json_collection)
def get_config():
parser = argparse.ArgumentParser()
parser.add_argument("-p", "--parameter-file", action="store", required=True)
parser.add_argument("-e", "--export-data-file", action="store", required=True)
parser.add_argument("-d", "--export-date", action="store", required=True)
args = parser.parse_args()
return [args.parameter_file, funcs.read_config(args.export_data_file), args.export_date]
if __name__ == "__main__":
logging.getLogger().setLevel(logging.INFO)
main(get_config)