python的subprocess命令运行问题
# 问题描述
运行下述代码时,cmd命令可能无法成功执行
result = subprocess.run(cmd)
1
# 解决方案
# 方案1
使用以下命令来运行
result = subprocess.run(cmd,shell=True) # 当然要确保环境变量PATH中有对应设置
1
说明:
Python 的 subprocess.run() 默认不走 Shell,直接调用 Windows 底层的 CreateProcess 函数,规则是:
只认 .exe 后缀的文件为「可执行文件」
不认 .bat/.cmd,也不会自动帮你用 cmd.exe 打开
当使用了shell=True时,会自动调用 cmd.exe 来执行命令。
1
2
3
4
5
2
3
4
5
# 方案2
如果是bat文件执行命令,可以指定绝对位置
比如想要执行下列命令,如果不使用shell=True是无法成功的,因为jadx是bat文件。
cmd = ['jadx', '-d', 'outputDir', 'test_data\\apk_samples\\realApp01.apk']
但是可以使用绝对位置成功执行:
cmd = [r'D:\programfiles\jadx\jadx-1.5.1\bin\jadx.bat', '-d', 'outputDir', 'test_data\\apk_samples\\realApp01.apk']
1
2
3
4
5
2
3
4
5