首页 > 解决方案 > Python 在 Windows 中的 Popen 在同一件事上既成功又失败

问题描述

LYX_EXE = r'"c:\Program Files (x86)\LyX 2.3\bin\LyX2.3.exe"'
process = subprocess.Popen(LYX_EXE)

这有效 - 程序加载。

LYX_EXE = r'"c:\Program Files (x86)\LyX 2.3\bin\LyX2.3.exe"'
process = subprocess.Popen([LYX_EXE])

这失败了:我得到“PermissionError:[WinError 5] 访问被拒绝”。

我做错了什么?我需要第二种调用类型,因为我想使用参数。

标签: pythonwindows

解决方案


我认为在第二种调用类型中你必须避免引用(因为它已经在一个列表中,可执行文件和参数已经分开了):

LYX_EXE = r"c:\Program Files (x86)\LyX 2.3\bin\LyX2.3.exe"
process = subprocess.Popen([LYX_EXE])

另请参阅:https ://docs.python.org/2/library/subprocess.html#converting-argument-sequence


推荐阅读