我的服务器上有2个Python脚本。我想从 SendMail.py
运行第二个 MainScript.py
,我需要传递2个参数。
我想在send_mail
中调用MainScript.py
函数:
def send_mail(subject, body):
# call SendMail.py with and pass the subject & body arguments
所以它会运行SendMail.py
。
如何在传递参数时运行其他脚本?是否可以不将主要功能从SendMail.py
导入MainScript.py
?如何获取SendMail.py
中的参数?
答案 0 :(得分:2)
您可以使用subprocess
模块运行另一个python解释器; sys.executable
为您提供了一个方便的起点:
import subprocess
import sys
subprocess.call([sys.executable, 'SendMail.py', subject, body])
但最佳做法是导入SendMail
;确保将其结构化为仅运行带有if __name__ == '__main__'
保护的“类似脚本”代码,然后从SendMail
导入主“发送”功能并重新使用:
def send_mail(subject, body):
# main sending function
if __name__ == '__main__':
# parse command line arguments into subject and body
send_mail(subject, body)
然后导入SendMail
并致电SendMail.send_mail(subject, body)
。
答案 1 :(得分:1)
使用子进程模块:
import subprocess
args = [subject, body]
subprocess.call(['python','SendMail.py'] + args)
在SendMail.py
内使用sys.argv
:
import sys
subject, body = sys.argv[1:]