Python:运行 来自父脚本的多个脚本,您还可以在其中设置变量值
Python: run multiple scripts from a parent script where you can also set the variable values
我有几个 Python 文件,我想按顺序执行这些文件以获得输出,现在我想自动执行此过程。所以我想要一个父脚本,我可以从中以正确的顺序执行我所有的子脚本。此外,我想执行其中一个文件两次,但使用两个不同的日期变量,并希望将输出存储在两个不同的文件夹中。如何在 Python 中创建这样的父脚本?
例如我想先执行 file1.py
并且日期(file1.py
中的变量)应该是 date1
并且输出应该存储在 dir1
和然后我想再次执行 file1.py
但这次日期应该是 date2
并且输出应该是 dir2
。我想执行 file2.py
。
我该怎么做?
您可以使用子进程轻松地从另一个 python 脚本 运行 python 脚本。类似于:
import subprocess
subprocess.Popen("script2.py some_argument")
使用子进程时出现问题 - 从中获取结果非常烦人(您可以从脚本中打印结果,然后在父文件中获取它们,但仍然如此)。
更好的解决方案 - 将中间结果保存在某些数据库中(例如简单的 SQLite 文件),因此您可以使用主脚本启动子脚本,但从数据库获取参数并将子脚本结果也写入数据库。这很简单,可以解决您的问题 (https://docs.python.org/3/library/sqlite3.html)。
例如,要在SQLite数据库中保存一些变量,你只需要:
import sqlite3
conn = sqlite3.connect("mydatabase.db")
cursor = conn.cursor()
# Create table (no need if it was created before)
cursor.execute("""CREATE TABLE example_table
(variable_name, variable_value)
""")
# Save changes
conn.commit()
# Insert data
cursor.execute("""INSERT INTO example_table
VALUES ('some_variable', 'some_value')"""
# Save changes
conn.commit()
我有几个 Python 文件,我想按顺序执行这些文件以获得输出,现在我想自动执行此过程。所以我想要一个父脚本,我可以从中以正确的顺序执行我所有的子脚本。此外,我想执行其中一个文件两次,但使用两个不同的日期变量,并希望将输出存储在两个不同的文件夹中。如何在 Python 中创建这样的父脚本?
例如我想先执行 file1.py
并且日期(file1.py
中的变量)应该是 date1
并且输出应该存储在 dir1
和然后我想再次执行 file1.py
但这次日期应该是 date2
并且输出应该是 dir2
。我想执行 file2.py
。
我该怎么做?
您可以使用子进程轻松地从另一个 python 脚本 运行 python 脚本。类似于:
import subprocess
subprocess.Popen("script2.py some_argument")
使用子进程时出现问题 - 从中获取结果非常烦人(您可以从脚本中打印结果,然后在父文件中获取它们,但仍然如此)。
更好的解决方案 - 将中间结果保存在某些数据库中(例如简单的 SQLite 文件),因此您可以使用主脚本启动子脚本,但从数据库获取参数并将子脚本结果也写入数据库。这很简单,可以解决您的问题 (https://docs.python.org/3/library/sqlite3.html)。
例如,要在SQLite数据库中保存一些变量,你只需要:
import sqlite3
conn = sqlite3.connect("mydatabase.db")
cursor = conn.cursor()
# Create table (no need if it was created before)
cursor.execute("""CREATE TABLE example_table
(variable_name, variable_value)
""")
# Save changes
conn.commit()
# Insert data
cursor.execute("""INSERT INTO example_table
VALUES ('some_variable', 'some_value')"""
# Save changes
conn.commit()