为什么我需要用两个双引号来分隔文件路径?

2024-09-28 17:29:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用python编写一个运行程序的脚本。路径或参数中的空格需要用引号引起来,但由于某些原因,除非我使用双引号字符串,否则它似乎不起作用

  DEFAULT_CLIENT = '""C:/Program Files/Borland/StarTeam SDK 14.0/bin""'
  command =('stjava.exe -autologon -is -p ""'+src+'"" -fp ""'+dst+'"" '
            '-filter "OI" "*" -f ""'+dst+'/config/bc.stjava""')
  if not "StarTeam Cross-Platform Client" in os.getenv("PATH"):
    print "[INFO] Star Team Client not found in path defaulting to: "+DEFAULT_CLIENT
    command = DEFAULT_CLIENT+"/"+command
  os.system(command)

为什么会这样?如果我做错了什么,那我该怎么做呢?在

[Update]调用os.system(command)时,将正确地找到应用程序:

^{pr2}$

但这并不是:

  command = '"C:/Program Files/Borland/StarTeam SDK 14.0/bin/stjava.exe" '
  command += '-autologon -is -p '
  command += '"C:\a\b c\d"'

它说“C:\Program”不是可识别的命令。我似乎不知道为什么会有争论。在


Tags: clientdefaultbinisossdkfilesprogram
3条回答

初始答案:

您希望C:/Program Files/Borland/StarTeam SDK 14.0/bin/stjava.exe是完整的二进制路径,对吗? 由于路径中有空格,因此必须使用引号。在

使用单引号,在连接之后,它将类似于:"C:/Program Files/Borland/StarTeam SDK 14.0/bin"stjava.exe。在

你试过使用正确的文件路径分隔符吗?在

在您添加更多信息时,我有另一个建议:

我看到命令字符串中的最后一个参数包含反斜杠字符。在许多情况下,这些都被证明是有问题的。你能试着把它们转义,或者加倍,变成"C:\\a\\b c\\d"之类的东西吗?在

据我所知,你需要按命令行事

'"C:/Program Files/Borland/StarTeam SDK 14.0/bin/stjava.exe" -autologon -is -p "abc def" -fp "aa bb" -filter "OI" "*" -f "aa bb/config/bc.stjava"'

您可以通过以下方式实现:

^{pr2}$

我要说的是,出于某种原因,您使用的命令行解析器或Windows或DOS命令行解释器需要用引号将文件名加上“转义引号”。我用DOS DIR命令尝试了各种组合,其中有0、1和2个双引号,每次都有效。在

相关问题 更多 >