1

我的服务器上有 2 个 Python 脚本。我想运行第二个,SendMail.py, from 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.pyinto导入主要功能MainScript.py?我如何抓住论点SendMail.py

4

2 回答 2

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).

于 2013-06-18T09:26:22.507 回答
1

使用子流程模块:

import subprocess
args = [subject, body]
subprocess.call(['python','SendMail.py'] + args)

内部SendMail.py使用sys.argv

import sys
subject, body = sys.argv[1:]
于 2013-06-18T09:22:32.013 回答