python - 在特定位置打开命令提示符,然后使用 python 在该位置运行带有一些命令行参数的脚本
问题描述
我能够使用 subprocess 模块打开命令提示符并将目录更改为所需位置,但我无法传递更多参数来运行应用程序以及一些命令行参数。我是 subprocess 模块的新手,所以我对 stackoverflow 进行了一些搜索,但找不到所需的结果。
我的代码:
import subprocess
path = r"C:/Users/Application_Folder"
p = subprocess.Popen(r"cmd.exe", cwd="C:/Project_Files", shell=True)
期望的输出:
Path: C:\Users\Application_folder\Application.exe
Need to open the cmd prompt in windows at the Application_folder location,
run the Application.exe by passing some command line arguments, using python
解决方案
只需传递您实际要执行的命令行、可执行路径和您要传递的任何参数:
command_line = [r'C:\Users\Application_Folder\Application.exe', '/argument1', '/argument2']
p = subprocess.Popen(command_line, cwd=r'C:\Project_Files')
要记住的几点注意事项:
- 你不应该使用
shell=True
. 这里没有必要——事实上它几乎从来没有必要——但它确实会带来潜在的安全风险。 - 原始字符串文字(以
r'
or开头r"
)的全部意义在于更改字符串中反斜杠字符的解释方式。r'C:\Program Files'
与 完全相同的字符串"C:\\Program Files"
。如果您的字符串中没有反斜杠,请不要使用r
前缀。
推荐阅读
- powershell - 如何使用 PowerShell 在 Azure Functions 中设置变量路径
- java - 无法在 UserRecyclerAdapter 类中使用“custom_list_users.xml”膨胀片段
- android - 添加.aar文件时React Native无法调试
- spring-boot - 如何从 pom 动态读取版本并更新 pom 版本?
- xml - 使用 xsd 和 xml Spring boot 的 Soap 客户端
- kubernetes - 处于 CrashLoopBackOff 状态的 Istio Prometheus pod
- kivy - kvlang:Builder.load_string 问题
- android - 自定义 Firebase 性能监控
- python - 如何使用 python-rtmidi 获取 midi 事件
- ruby-on-rails - 如何在 simple_form_for 中维护信息,直到通过正确答案