从批处理脚本编写 Python 脚本不适用于一个命令
Posted
技术标签:
【中文标题】从批处理脚本编写 Python 脚本不适用于一个命令【英文标题】:Writing Python Script from Batch Script is not working for one command 【发布时间】:2022-01-15 20:33:38 【问题描述】:我正在尝试将批处理脚本转换为 python 脚本。 这是批处理脚本,它在指定构建它的项目上调用 Klockwork exe。
%KwPath%\Kwinject -o kwinjectmp.out msbuild %BaseProjPath%/CodingGuide.vcxproj /t:Rebuild /p:Configuration="Release" /p:Platform="x64" /p:CLToolExe=cl.exe /p:CLToolPath=%VSBinPath%
我已经为它编写了等效的 python 脚本。
args = KwPath + '\\Kwinject.exe sync -o ' + 'kwinjectmp.out' + 'msbuild ' + BaseProject + '\\' + ProjectFolder + '\\' + ProjectName + '/t:Rebuild /p:Configuration="Release" /p:Platform="x64" /p:CLToolExe=cl.exe /p:CLToolPath=' + VSBinPath
print(args)
subprocess.call(args, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
我已经正确声明了 BaseProject、VSBinPath、KwPath。但是执行并没有像在 BatchScript 中那样发生,基本上脚本没有提供任何输出/工作。
【问题讨论】:
【参考方案1】:由于您的使用,参数之间的空格可能不存在。试试这个:
import os
path1 = os.path.join(KwPath, 'Kwinject.exe')
path2 = os.path.join(BaseProject, ProjectFolder, ProjectName)
subprocess.call([
path1,
'sync',
'-o', 'kwinjectmp.out',
'msbuild',
path2,
'/t:Rebuild',
'/p:Configuration="Release"',
'/p:Platform="x64"',
'/p:CLToolExe=cl.exe',
'/p:CLToolPath=' + VSBinPath
],
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT
)
【讨论】:
以上是关于从批处理脚本编写 Python 脚本不适用于一个命令的主要内容,如果未能解决你的问题,请参考以下文章
Python3 正则表达式不适用于脚本,但适用于 pythex.org
Python 导入适用于解释器,不适用于脚本 Numpy/Matplotlib