繁体   English   中英

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

[英]Run a python script from another python script and pass variables to it

还有一些类似的问题。 但是,或者答案没有涵盖对我来说很关键的特定部分,或者我只是听不懂。 所以,让我解释一下我的问题:

我想创建3个python脚本。 我们称它们为p1.py,p2.py和p3.py。 当我运行p1时,它将收集时间信息

import datetime    
captureTime = datetime.datetime.now()

然后它将更改日期的格式并将其与变量一起存储,如下所示

folderName = captureTime.strftime('%Y-%m-%d-%H-%M-%S')

然后,它将创建一个由字符串“ folderName”的值命名的文件夹。

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

p1应该运行p2和p3,并将'folderName'的值传递给它们,然后停止; 并且,p2和p3应该在以“ folderName”值命名的文件夹下创建文件。

谢谢。

在p1中:

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

在p2中:

def main(args): 
    do_whatever()

if __name__ == '__main__':
  main()

p3将具有与p2类似的结构

您可以利用子流程模块来执行外部命令。 最好先从简单得多的命令入手,以掌握所有内容。 下面是一个虚拟的示例:

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并将其反馈回您的下一个脚本。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM