如何将参数从服务器上的一个python脚本传递给另一个?

时间:2013-06-18 09:20:11

标签: python argument-passing

我的服务器上有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中的参数?

2 个答案:

答案 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:]