具有隐藏窗口的跨平台子进程
- 2024-10-21 09:14:00
- admin 原创
- 73
问题描述:
我想在后台打开一个进程并与其交互,但这个进程在 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)
但情况也好不到哪里去。
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件
热门标签
云禅道AD