跨平台隐窗口子进程
我想在后台打开一个进程,并与它进行交互,但这个进程在Linux和Windows上都应该是看不见的。在Windows上,你需要处理一些与STARTUPINFO相关的东西,但在Linux上这是不适用的:
ValueError: startupinfo只支持Windows平台
有没有比为每个操作系统创建一个单独的Popen命令更简单的方法呢?
if os.name == 'nt':
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
proc = subprocess.Popen(command, startupinfo=startupinfo)
if os.name == 'posix':
proc = subprocess.Popen(command)
4 个回答
4
我觉得你做的已经很简单了。你提到的优化其实只是减少大约5行代码而已。就这些钱,我建议你继续你的项目,接受这是跨平台开发的一个结果。如果你经常遇到这种情况,可以考虑创建一个专门的类或函数,把这个逻辑封装起来,然后导入使用。
12
只是提醒一下:对于Python 2.7,我需要用subprocess._subprocess.STARTF_USESHOWWINDOW
,而不是subprocess.STARTF_USESHOWWINDOW
。
40
你可以少写一行代码哦 :)
startupinfo = None
if os.name == 'nt':
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
proc = subprocess.Popen(command, startupinfo=startupinfo)