Как импортировать скрипт Python и передать аргументы в основную функцию

Не использовал ваш sql выше, но вот пример обновления таблицы на основе инструкции объединения.

UPDATE p
SET    p.category = c.category
FROM   products p
       INNER JOIN prodductcatagories pg
            ON  p.productid = pg.productid
       INNER JOIN categories c
            ON  pg.categoryid = c.cateogryid
WHERE  c.categories LIKE 'whole%'
-1
задан mean developer 16 January 2019 в 21:07
поделиться

1 ответ

Подумайте о рефакторинге вашего кода!

Чтобы ответить на ваш вопрос, вы можете передать строку из main.py в gen_json.main('...') и далее в gen_json.get_config('...'). Argparse оценит эту строку, которую нужно разбить на список.
Вы по-прежнему можете вызывать generate.py с параметрами командной строки.

Обратите внимание, что я удалил ненужный / неправильный код / ​​идентификацию , чтобы показать, как это может работать в принципе.

generate.py:

import argparse
import sys


def main(cliParams=None):
  cfg, data, date = get_config(cliParams)
  print (cfg, data, date)

  #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)
  #print json_path

def get_config(cliParams=None):
  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)

  if not cliParams:
    args = parser.parse_args()
  else:
    args = parser.parse_args(cliParams.split())
  #return [args.parameter_file, funcs.read_config(args.export_data_file), args.export_date]
  return [args.parameter_file, args.export_data_file, args.export_date]


if __name__ == "__main__":
  logging.getLogger().setLevel(logging.INFO)
  main()

main.py:

import os
import generate as gen_json

def generate_json():
  path = '/tmp/foo.yml'
  data = 'export_agent_core_agent.yaml'
  date = '2019-01-15'

  argParseString = '-p %s -e %s -d %s' % (path, data, date)
  gen_json.main(argParseString)

if __name__ == '__main__':
  generate_json()

Печать на стандартный вывод:

>>> /tmp/foo.yml export_agent_core_agent.yaml 2019-01-15
0
ответ дан Maurice Meyer 16 January 2019 в 21:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: