我正在尝试创建一个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')
。
答案 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的建议为我工作。