1

我正在编写一个需要打开另一个脚本的脚本,但继续运行主脚本,以便两个脚本同时运行。

我试过execfile()了,文件打不开。当我使用os.system(somefile.py)它成功通过控制台打开 .py 文件但立即关闭它。是否有替代方案可以让我在主 python 脚本中运行 python 脚本,但同时运行两个进程而不会相互冲突?

这是我测试过的示例代码:

import os
file_path = 'C:\\Users\\Tyler\\Documents\\Multitask Bot\\somefile.py'

def main():
    os.system(file_path)

if __name__ == '__main__':
    main()
4

3 回答 3

3

execfile()并将os.system()阻塞父进程,直到子进程退出。使用subprocess.Popen(),例如

import subprocess, time
file_path = 'C:\\Users\\Tyler\\Documents\\Multitask Bot\\somefile.py'

def main():
    child = subprocess.Popen(['python', file_path])
    while child.poll() is None:
        print "parent: child (pid = %d) is still running" % child.pid
        # do parent stuff
        time.sleep(1)
    print "parent: child has terminated, returncode = %d" % child.returncode

if __name__ == '__main__':
    main()

这只是处理它的一种方法。您可能希望从孩子那里收集标准输出和/或标准错误,并可能将数据发送到孩子的标准输入。阅读 subprocess 模块。

于 2012-07-27T00:12:29.787 回答
2

如果要同时运行另一个脚本,请考虑subprocess模块。

于 2012-07-26T23:43:39.407 回答
0

您的问题可能是该文件未在C:\\Users\\Tyler\\Documents\\Multitask Bot\\ 其他地方执行。本地导入可能会失败。

你可以尝试os.chdir('C:\\Users\\Tyler\\Documents\\Multitask Bot\\')以前执行os.system吗?

于 2012-07-27T00:17:47.183 回答