我正在将以下commandString传递给具有路径和参数的脚本:
“ C:/用户/用户/文档/ MyVersions /我的测试脚本/script_to_process.exe” -i“ C:/用户/用户/文档/映射/ Test_Process /文件mapping.xlsx” -p“文件映射” -s“ ALL” -tc“ V” -sc“ O”
像这样:
returnCode = os.system(commandString)
这很好用,除非我的目录中有空格。根据其他SO问题的建议,我在路径周围添加了两个空格,但仍然没有任何乐趣...
更令人沮丧的是,尽管这条路径不起作用...
“ C:/用户/用户/文档/ MyVersions /我的测试脚本/script_to_process.exe”
此路径也有一个空格(尽管它在文件中而不是目录中)确实可以...
“ C:/用户/用户/文档/映射/ Test_Process /文件mapping.xlsx”
最后一点信息,当我在路径中传递它时,它在第一个空格处(在我之后)失败...
“ C:/ Users / User / Documents / MyVersions / my”未被识别为内部或外部命令, 可操作的程序或批处理文件。
我需要做一些特殊的事情来处理目录名吗?是吗如果没有,谁能帮助我解决我做错的事情?
答案 0 :(得分:1)
在CLI环境中,space
被视为参数分隔符。
要使用空格执行命令,请选择任意选项
使用\
转义空格也称为转义符
cmd = "My\ Command\ With\ Space"
引用整个命令
cmd = "'My Command With Space'"
答案 1 :(得分:0)
谢谢Kevin Kevin,让我进一步研究路径名中的空间-尤其是。与os.system有关。我终于在以下位置找到了答案:
TL; DR-我有多个包裹在双qoutes中的项目,这不是bueno-这是Windows cmd.exe处理器的问题,而不是os.system调用。
Eli的解决方案是将整个命令行调用包装在双qoute中,这对我有用...