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

时间:2018-12-06 13:21:21

标签: python cloudera 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

1 个答案:

答案 0 :(得分:2)

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')])

那是说:您确定要将另一个脚本作为单独的 process 运行吗?很有可能,更好的解决方案是提取Python函数的可重用,并将该库import插入各种脚本中。

将Python模块的集合创建并打包到可重用的库中可能是一项艰巨的任务,因为它将使您从“一组不相关的脚本”转向“打包的编程产品”。如果您有需要开始共享实现细节的脚本,那么也许应该将共享代码当作库考虑。