我想在后台打开一个程序,用它交流,但这个过程应该在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)
您可以减少一个行:)
startupinfo = None
if os.name == 'nt':
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
proc = subprocess.Popen(command, startupinfo=startupinfo)
刚一说明:为Python 2.7我必须使用subprocess._subprocess.STARTF_USESHOWWINDOW
而不是subprocess.STARTF_USESHOWWINDOW
。
我不知道,你可以得到比你做了什么要简单得多。 你说的是优化了也许5行代码。 为了钱,我只想得到我的项目,并接受这种跨平台开发的consquence。 如果你做了很多,然后创建一个专门的类或函数来封装逻辑和导入。
你可以把你的代码:
params = dict()
if os.name == 'nt':
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
params['startupinfo'] = startupinfo
proc = subprocess.Popen(command, **params)
但是这也不遑多让。