具有隐藏窗口的跨平台子进程
- 2024-10-21 09:14:00
- admin 原创
- 216
问题描述:
我想在后台打开一个进程并与其交互,但这个进程在 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)
解决方案 1:
你可以减少一行:)
startupinfo = None
if os.name == 'nt':
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
proc = subprocess.Popen(command, startupinfo=startupinfo)
解决方案 2:
请注意:对于Python 2.7,我必须使用subprocess._subprocess.STARTF_USESHOWWINDOW
而不是subprocess.STARTF_USESHOWWINDOW
。
解决方案 3:
我不确定你能做得比你做的更简单。你说的是优化大约 5 行代码。为了赚钱,我只会继续我的项目,并接受这是跨平台开发的结果。如果你经常这样做,那么创建一个专门的类或函数来封装逻辑并导入它。
解决方案 4:
你可以将你的代码变成:
params = dict()
if os.name == 'nt':
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
params['startupinfo'] = startupinfo
proc = subprocess.Popen(command, **params)
但情况也好不到哪里去。
相关推荐
热门文章
项目管理软件有哪些?
热门标签
云禅道AD