Как я могу использовать обновленный словарь из функции main() в другой функции?

#python #dictionary

Вопрос:

У меня есть словарь, который находится в основной функции, и я хочу использовать его в другой функции для представления данных в табличном формате. Я создал словарь в следующей функции:

 def file_reader():  config_dict = {}  newDict = {}  configParser = configparser.ConfigParser()   configParser.read('config.ini')  for section in configParser.sections():  for k,v in configParser.items(section):  config_dict[k] = v  config_dict = dict(configParser.items('SectionTwo'))  rev_dict = dict(map(reversed, configParser.items('SectionOne')))  for v in rev_dict:  newDict[k] = rev_dict[v]  list_vals = list(config_dict.values())  list_keys = list(config_dict.keys())  return rev_dict, newDict  

Затем я использовал словарь, созданный в вышеупомянутой функции в основной функции, следующим образом:

 def main(): rev_dict, newDict = file_reader() parser = ap.ArgumentParser() parser.add_argument('-s', '--start', help='start script', action='store_true') args = parser.parse_args()  elif args.start:  for k,v in rev_dict.items():  print("nTestcase:"   v   "n");print(v, "=", k);print("n");time.sleep(5);  proc = sp.call([k], shell=True);time.sleep(5);  print('Process ID is:', os.getpid())  if proc != 0:  if proc lt; 0:  print("nKilled by signal!n", -proc)  else:  print("nFailed with return code: ", proc)  newDict[v] = 'Fail'  print(json.dumps(dic, indent=4, sort_keys=True))  else:  print("nOKn")  newDict[v] = 'Pass';  print(json.dumps(dic, indent=4, sort_keys=True))  sipResponse(args.ip)  

Затем я создал функцию с именем read_file (), в которой я хочу создать отчет и использовать обновленный словарь с именем newDict из основной функции.

 def read_file():  rev_dict = file_reader()  shutil.copy("logfile.log", "file.txt")  f = open("file.txt", "r ")  headers = ['Testcase', 'Path']  data = sorted([(k,v) for k,v in rev_dict.items()])  f.write(tabulate(data, headers=headers, tablefmt="grid"))  f.close()  sys.exit(0)  

Может кто-нибудь, пожалуйста, провести меня?

Ответ №1:

Вам нужно ввести аргумент в read_file функцию:

 def read_file(new_dict):  

Затем, main когда вы захотите вызвать новую функцию, позвоните read_file(newDict) . Обратите внимание , каково имя аргумента в функции new_dict , тем самым показывая, что эти два имени на самом деле разные.

Таким образом, main может выглядеть примерно так, с удалением другого кода для простоты: просто добавьте вызов другого метода.

 def main():  rev_dict, newDict = file_reader()  read_file(newDict)  

Комментарии:

1. Как я могу использовать словарь из main() в любой другой функции?