【发布时间】:2016-11-06 05:31:45
【问题描述】:
我正在尝试编写一个小型 python 脚本,它允许我将参数传递给命令行对话框,以便运行安装文件。 我希望能够将参数传递给可执行文件,例如:“setup.exe --uninstall --delete-profile --force-uninstall”
我尝试使用“os.system”模块和“subprocess.call”模块,但在这两种情况下,脚本都不起作用。
我没有收到错误。相反,脚本刚刚结束,但设置和\或应用程序文件和文件夹不会被删除。
当我手动(通过命令行)运行相同的命令时,应用程序和相关文件将被删除。
这是代码行:
subprocess.call('setup.exe --uninstall --delete-profile --force-uninstall', shell=True)
我认为问题是由于权限(尽管我通过 IDLE 以管理员权限运行脚本)或使用“--”符号分隔参数(不幸的是,这是安装文件使用的格式) .
任何帮助将不胜感激。
【问题讨论】:
-
如果没有更多信息,我们无法真正告诉您出了什么问题。尝试从 python 终端手动启动该命令并报告您遇到的错误。
-
您是否尝试将您的命令作为参数列表传递
['setup.exe', '--uninstall',...]并使用shell=False(默认值)。 -
@Bakuriu,当我从 python 终端运行“subprocess.call”命令时,一切正常。执行命令并删除相关文件。但是,如果我通过 cmd ("python myscipt.py") 运行脚本,则脚本似乎正在运行,但文件不会被删除(同样,没有错误。它只是结束)。
-
也许您使用的 IDE 正在从不同的工作目录运行代码?考虑在使用
subprocess.call之前使用os.chdir移动到正确的目录,或者指定setup.exe的完整路径。或者,IDE 可能正在执行一些 I/O 重定向。考虑显式传递stdout/stderr参数,以便它们写入文件并检查这些文件。
标签: python command-line parameters subprocess