假设我有 3 个接受用户输入的脚本,可能有不同的 Python 版本,并在不同的模块中导入:
脚本 #1
#Script 1: Python 3.6
import os
import geopandas
import xlrd
FY = input("Enter the fiscal year.")
quarter = input("Enter the quarter.")
print("FY" + FY + "Q" + quarter)
...
脚本 #2
#Script 2: Python 3.6
import os
import pandas as pd
import datetime
file_dir = input("Enter input file path")
file_name = input("Enter the input file name.")
print(os.path.join(file_dir, file_name))
...
脚本 #3
#Script 2: Python 2.7
import os
import arcpy
import numpy
import datetime
import time
today = dt.datetime.today().strftime('%Y%m%d')
print(today)
...
我想创建一个主脚本,A)按顺序运行每个脚本(例如:脚本 #2 在脚本 #1 完成之前不会运行),B)仍然允许用户从主脚本输入用户输入, C) 使用正确的 Python 版本运行脚本(如果可能,使用具有必要模块/包的特定环境)
我见过多个使用subprocess
withPopen
或 call 的例子:
import subprocess
subprocess.call("script1.py", shell=True)
subprocess.call("script2.py", shell=True)
....
但我也看到警告不要使用suprocess
来执行此操作(尤其是使用)(不知道为什么)。Popen
我也不确定如何使用 subprocess 指定 Python 版本和输入变量(尽管看起来您可以使用Popen
以某种方式输入 args 作为字符串)。我知道还有其他的 mods/pacakges,比如 runpy,也可以用于类似的效果。关于使用什么以及如何在这里最好地实现我的最终目标的任何建议?