Связывание нескольких скриптов Python для запуска один за другим - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть три сценария Python. Один собирает данные из базы данных (data_for_report.py), другой генерирует отчет из этих данных и создает файл .xlsx (report_gen.py), а последний изменяет стиль этого файла Excel (excel_style.py).

Теперь все три файла находятся в одном каталоге, и сейчас я просто выполняю сценарии один за другим в интерпретаторе, чтобы получить отчет. Я хочу, чтобы все работало одним щелчком мыши, чтобы люди, которым нужен этот отчет, могли сделать это сами. Я думал о создании exe с pyinstaller, но я не могу придумать способ связать мои сценарии вместе, чтобы когда data_for_report.py заканчивал свою работу report_gen.py запускался и так на.

Я пытался поставить

subprocess.call("report_gen.py", shell=True)

в конце первого скрипта, но ничего не происходит, я просто получаю это:

Out [2]: 1

Как я мог это сделать?

Ответы [ 2 ]

1 голос
/ 26 апреля 2019

На самом деле, эта проблема может быть решена с помощью пакетного программирования.Ваши файлы Python будут работать в пакетном режиме, то есть один файл за другим.Я предполагаю, что все ваши три файла Python находятся в папке ReportGenerator с Path как C:\ReportGenerator, поэтому настройте соответственно PATH для вашей системы (пожалуйста, обратите внимание на \ и / в PATH папки, содержащей файлы python).

Ваши файлы, которые должны быть выполнены:

data_for_report.py
report_gen.py
excel_style.py

Теперь откройте файл Блокнота и напишите следующие строки.

cd C:/ReportGenerator
python data_for_report.py
python report_gen.py
python excel_style.py
PAUSE

Теперь сохраните этот файл с помощью file_Name.bat в любом месте uхотите в систему и запомните это.После сохранения значок пакетного файла сформируется при сохранении.Теперь откройте окно командной строки и просто перетащите этот командный файл в окно командной строки.

1 голос
/ 26 апреля 2019

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

Так что, если сценарии

data_for_report.py

def f1():
  ...

report_gen.py

def f2():
  ...

excel_style.py

def f3():
  ...

Тогда последний скрипт, который вы запустите, будет:

from data_for_report import f1
from report_gen import f2
from excel_style import f3

f1()
f2()
f3()
...