Python - 除了 os.system 之外,还有其他方法可以从 python 脚本 运行 一个 python 脚本吗?

Python - Is there a another way to run a python script from a python script besides os.system?

除了 os.system 之外,还有其他方法可以从 python 脚本中 运行 一个 python 脚本吗?在 python 脚本的末尾,我尝试 运行 另一个 python 脚本,但我 运行 遇到了权限错误。这可能只是由于我的访问权限,或者可能有更好的方法 运行 在 Cloudera Data Science Workbench 中我没有 运行 权限问题?

num_of_rows_parsed_url_df = len(parsed_url_df)
num_not_on_maj_one_mil = len(parsed_url_df[parsed_url_df.GlobalRank == 1000001])
print "Number of Rows: ",num_of_rows_parsed_url_df
Number of Rows:  34091
print "Number of Requests not on the Majestic Million: ", num_not_on_maj_one_mil
Number of Requests not on the Majestic Million:  17613

import os
os.system("Proxy/Proxy_Analytics/AWS_API_Cost.py")
32256sh: 1: Proxy/Proxy_Analytics/AWS_API_Cost.py: Permission denied
os.system("Proxy/Proxy_Analytics/AWS_API_Cost.py 1")
32256sh: 1: Proxy/Proxy_Analytics/AWS_API_Cost.py: Permission denied

不仅os.system不是唯一的方法,而且是特别糟糕的方法。 os.system 是一种安全隐患,几乎 100% 的时间都应该避免。

听起来您想要的是 subprocess.run。如果你想运行另一个Python脚本使用与运行当前解释器相同的解释器,你可以这样做:

import os
import subprocess
import sys

subprocess.run([sys.executable, os.path.abspath('path/to/script.py')])

也就是说:您确定要 运行 另一个脚本作为单独的 进程 吗?最有可能的是,更好的解决方案是将 Python 函数的可重用 import 该库提取到您的各种脚本中。

创建 Python 模块的集合并将其打包到可重复使用的库中可能是一项非常重要的任务,因为它使您从 "a collection of unrelated scripts" 转向 "a packaged programming product"。如果您有需要开始共享实现细节的脚本,那么无论如何您都应该开始将共享代码视为一个库。