У меня есть сценарий Python 'script1.py', который создает словарь 'out_dict' в конце выполнения. Я звоню 'script1.py' из другого скрипта 'script2.py'.

Есть ли способ получить только окончательный словарь 'out_dict' (примечание: у меня есть некоторые операторы печати тоже в 'scirpt1.py') в переменную в 'script2.py'.

Script1.py

......
......
some print statement
......
some print statement
......
out_dict = {...}
print(out_dict)

Script2.py

import os
val = os.system("python3.6 script1.py")
0
Ashwin 5 Июл 2019 в 13:10

4 ответа

Лучший ответ

В начале script1.py добавить

import pickle as p

И после того, как ваш dict был создан добавить

with open('dict.p', 'wb') ad f:
    p.dump(out_dict, f)

Затем в script2.py снова импортируем pickle, но на этот раз загружаем из файла

import os
import pickle as p
val = os.system("python3.6 script1.py")

with open('dict.p', 'rb') as f:
    your_dict = p.load(f)     # your dict will loaded

Или

Вы вообще не можете сохранить ваш dict в файл и просто получить к нему доступ из script1.py как класс var, но вам придется импортировать ваш первый скрипт.

script2.py пример:

import script1

your_dict = script1.out_dict     # your dict var from the first script
print (out_dict)
1
okawo 5 Июл 2019 в 10:47

Вам нужно объявить 2 файла. Первый будет содержать функцию, которую вы хотите вызвать. Как это:

< Сильный > func.py

def myFunc():
    return 2

В скрипте, который вы хотите вызвать функцию, вы должны сделать это:

< Сильный > main_script.py

import func

val = func.myFunc()
print(val)
0
Orestis Zekai 5 Июл 2019 в 10:21

Более простым способом было бы импортировать один файл в другой и использовать этот словарь :

< Сильный > func.py

def function():
    out_file=dict()
    # Your Code
    return out_file

< Сильный > main.py

import func
val = func.function()
0
Rohan Mohapatra 5 Июл 2019 в 10:39

Два способа сделать это:

  1. Сохраните выходной словарь в другом файле, который затем будет прочитан script2.py
  2. Как предложил Даниил, используйте маркер. Это снимет нагрузку с другого файла, но вам понадобится соответствующий маркер.
0
frunkad 5 Июл 2019 в 10:28