我在运行程序的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)
这是为什么?如果我在这里做错了,那我该怎么做呢?
[更新] 调用os.system(command)
时正确找到应用程序:
command = r'"C:/Program Files/Borland/StarTeam SDK 14.0/bin/stjava.exe" '
command += '-autologon -is -p '
但这并不是:
command = '"C:/Program Files/Borland/StarTeam SDK 14.0/bin/stjava.exe" '
command += '-autologon -is -p '
command += '"C:\a\b c\d"'
它说' C:\ Program'不是公认的命令。论证中的路径似乎是一个问题,但我不知道为什么。
答案 0 :(得分:0)
初步回答:
您希望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"
答案 1 :(得分:0)
根据我的理解,您需要按照行命令
'"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"'
您可以通过以下方式实现:
>>> import os
>>>
>>> DEFAULT_CLIENT = '"C:/Program Files/Borland/StarTeam SDK 14.0/bin"'
>>>
>>> DEFAULT_CLIENT
'"C:/Program Files/Borland/StarTeam SDK 14.0/bin"'
>>>
>>> src = "abc def"
>>> dst = "aa bb"
>>>
>>>
>>> command =('stjava.exe" -autologon -is -p "'+src+'" -fp "'+dst+'" -filter "OI" "*" -f "'+dst+'/config/bc.stjava"')
>>>
>>>
>>>
>>> DEFAULT_CLIENT[:-1] + os.sep + command
'"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"'
>>>
>>>
答案 2 :(得分:0)
我要说的是,由于某种原因,您正在使用的命令行解析器或Windows或DOS命令行解释器需要引用的文件名才能使用"转义引号&# 34 ;.我尝试使用DOS DIR命令的各种组合,带有零,一和两个双引号,并且每次都有效。