在前一行仍在运行的情况下,如何跳至python代码的另一行

时间:2018-12-26 06:17:38

标签: python django command-line autorun

我正在尝试创建一个python脚本来自动运行所有Django命令, 但是脚本执行在os.system('python manage.py runserver')处停止,并且不运行下一行,因为os.system('python manage.py runserver')需要保持运行。 os.system('python manage.py runserver')仍在运行时,如何运行下一行代码?

我尝试使用python sleep方法等待几秒钟,然后运行下一行,但是没有用。

这是我的代码:

import os, webbrowser, time
os.system('pipenv shell')
os.system('python manage.py runserver')
time.sleep(5)
webbrowser.open('http://127.0.0.1:8000', new=1, autoraise=True)

执行在os.system('python manage.py runserver')处停止,但我希望它在webbrowser.open('http://127.0.0.1:8000', new=1, autoraise=True)仍在运行时运行os.system('python manage.py runserver')

3 个答案:

答案 0 :(得分:1)

较旧的模块os.system, os.spawn*被功能更强大的subprocess较新的模块所取代,建议代替较旧的模块使用。

使用os.spawnl(os.P_NOWAIT, 'python manage.py runserver')可以返回新进程的PID,而无需等待返回码。

subprocess.Popen()创建后台子进程,并且不等待完成子进程。有关更多信息,请遵循documentation

答案 1 :(得分:0)

您需要使用subprocess

from subprocess import call
call('python manage.py runserver',shell=True,cwd="/my/code/dir/") # your code directory
webbrowser.open('http://127.0.0.1:8000', new=1, autoraise=True)

答案 2 :(得分:0)

subprocess.Popen()按照@arryph的建议为我工作。