将带有空格的路径名传递给命令行

时间:2018-10-29 20:48:38

标签: python-3.x

我正在将以下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”未被识别为内部或外部命令, 可操作的程序或批处理文件。

我需要做一些特殊的事情来处理目录名吗?是吗如果没有,谁能帮助我解决我做错的事情?

2 个答案:

答案 0 :(得分:1)

在CLI环境中,space被视为参数分隔符。

要使用空格执行命令,请选择任意选项

  1. 使用\转义空格也称为转义符

    cmd = "My\ Command\ With\ Space"

  2. 引用整个命令

    cmd = "'My Command With Space'"

答案 1 :(得分:0)

谢谢Kevin Kevin,让我进一步研究路径名中的空间-尤其是。与os.system有关。我终于在以下位置找到了答案:

Eli Bendersky's website

TL; DR-我有多个包裹在双qoutes中的项目,这不是bueno-这是Windows cmd.exe处理器的问题,而不是os.system调用。

Eli的解决方案是将整个命令行调用包装在双qoute中,这对我有用...