我有一个简单的 python (2.7) 脚本,应该执行一些 svn 命令:
def getStatusOutput(cmd):
print cmd
p = subprocess.Popen([cmd],stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
output, status = p.communicate()
return status, output
svn_cmd = [
["svn co " + FIRMWARE_URL + "/branches/interfaces/ interfaces --depth empty", ""],
["svn up interfaces/actual_ver.txt", " Getting current version of a branch "]
]
status, output = getStatusOutput(svn_cmd[0][0])
不幸的是,当它在我 friend 的机器上运行时,它失败并出现错误:“文件名、目录名或卷标语法不正确。” 当我在我的机器上运行它时,它工作正常。
如果我改变:
status, output = getStatusOutput(svn_cmd[0][0])
到
status, output = getStatusOutput(svn_cmd[0])
然后它将成功执行数组的第一个元素(命令),但第二个元素(注释)将失败。有谁知道可能出了什么问题吗?
最佳答案
解决方案比我想象的要容易。问题出在这里:
p = subprocess.Popen([cmd],stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
和 [cmd]
应该不带 [ ]。否则,元素将被视为数组而不是字符串。
希望这会对某人有所帮助。
关于python - 文件名、目录名或卷标语法不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23623947/