#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() в любой другой функции?