从另一个python脚本运行python脚本并将变量传递给它

时间:2015-08-31 19:52:42

标签: python

有一些类似的问题被提出;但是,要么答案没有涵盖特定部分,这对我来说是关键点,要么我无法理解。所以,让我解释一下我的问题:

我想创建3个python脚本。我们称之为p1.py,p2.py和p3.py。当我运行p1时,它会用

收集时间信息
<?xml version="1.0" encoding="UTF-8"?>

<config>
    <modules>
        <Test_Productorderlog>
            <active>true</active>
            <codepool>local</codepool>
        </Test_Productorderlog>
    </modules>
</config>

然后它会改变日期的格式并用变量存储它,如下所示

import datetime    
captureTime = datetime.datetime.now()

然后,它将创建一个以字符串&#39; folderName&#39;的值命名的文件夹。

在这部分之后,我不知道该怎么做。

p1应该运行p2和p3,并传递&#39; folderName&#39;的值对他们,然后停止;并且,p2和p3应该在&#39; folderName&#39;的值命名的文件夹下创建文件。

谢谢。

2 个答案:

答案 0 :(得分:3)

在第1页:

import p2
args = ['foo', bar]
p2.main(args)

在p2中:

def main(args): 
    do_whatever()

if __name__ == '__main__':
  main()

p3与p2

具有相似的结构

答案 1 :(得分:1)

您可以使用subprocess模块执行外部命令。最好首先从更简单的命令开始,以获得所有的要点。下面是一个虚拟的例子:

import subprocess
from subprocess import PIPE

def main():
    process = subprocess.Popen('echo %USERNAME%', stdout=PIPE, shell=True)
    username = process.communicate()[0]
    print username #prints the username of the account you're logged in as

    process = subprocess.call('python py1.py --help', shell=True)
    process = subprocess.call('python py2.py --help', shell=True)
    process = subprocess.call('python py3.py --help', shell=True)

if __name__ == '__main__':
    main()

这将获取echo %USERNAME%的输出并存储它。它还将运行您的三个脚本,但对它们没有任何想象力。您可以PIPE脚本的输出,如第一个示例所示,并将它们反馈到您的下一个脚本。

这是 NOT 执行此操作的唯一方法(您可以导入其他脚本)。如果您希望使用外部主脚本来控制和操作所有子脚本,这很好。

如果您尚未检查我们的argparse,则应该。