我正在编写一个需要打开另一个脚本的脚本,但是继续运行主脚本,以便两个脚本同时运行。
我已尝试过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()
答案 0 :(得分: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()
这只是处理它的一种方法。您可能希望从子级收集stdout和/或stderr,并可能将数据发送到子级的stdin。阅读子过程模块。
答案 1 :(得分:2)
如果要同时运行其他脚本,请考虑subprocess模块。
答案 2 :(得分:0)
您的问题可能是该文件未在C:\\Users\\Tyler\\Documents\\Multitask Bot\\
中执行
但在其他地方。本地导入可能会失败。
您可以尝试在os.chdir('C:\\Users\\Tyler\\Documents\\Multitask Bot\\')
之前执行os.system
吗?