Python 3中如何让Google-Chrome在新终端独立运行?
解决Ubuntu下Python调用Chrome并在独立终端运行的问题
我完全懂你的困扰——用os.system或者普通的subprocess.call调用Chrome时,当前终端直接被卡住,根本没法继续给Python程序输入内容。下面给你几个实用的解决方案:
核心问题分析
os.system会阻塞当前进程,必须等Chrome关闭才会释放终端,这显然不是你想要的交互状态。subprocess.call默认也是阻塞模式,shell=True只是让命令通过shell执行,但并不会自动帮你新开一个独立终端窗口。
解决方案:借助终端模拟器启动Chrome
Ubuntu 16.04默认自带gnome-terminal,我们可以用它来新开一个终端窗口运行Chrome,同时让这个进程彻底脱离当前Python会话的控制:
方法1:使用gnome-terminal(推荐)
import subprocess # 新开gnome-terminal窗口并启动Chrome,同时脱离当前会话 subprocess.Popen( ['gnome-terminal', '-e', 'google-chrome'], start_new_session=True )
gnome-terminal -e "google-chrome":告诉终端模拟器启动后立即执行Chrome命令。start_new_session=True:让新终端进程脱离当前Python程序的会话组,这样就算你关闭运行Python的终端,Chrome也不会跟着被关掉。
方法2:使用xterm(轻量终端备选)
如果你偏好更轻量的终端,也可以用xterm实现同样效果:
import subprocess subprocess.Popen( ['xterm', '-e', 'google-chrome'], start_new_session=True )
如果系统没装xterm,执行sudo apt-get install xterm就能快速安装。
额外小技巧
要是你希望Chrome启动后,终端窗口不会立刻关闭(方便查看输出或后续操作),可以把终端命令改成这样:
subprocess.Popen( ['gnome-terminal', '-e', 'bash -c "google-chrome; exec bash"'], start_new_session=True )
这样Chrome启动后,终端会保持打开状态,直到你手动关闭它。
设置完成后,你的Python程序终端就不会被占用,能正常接收后续输入啦!
内容的提问来源于stack exchange,提问作者RishiC
相关产品推荐
相关产品推荐

