gpt4 book ai didi

python - 为什么在 Python 路径中需要 4 个反斜杠?

转载 作者:太空宇宙 更新时间:2023-11-04 07:09:24 27 4
gpt4 key购买 nike

当我使用 Python 3 通过 subprocess.call() 启动程序时,为什么路径中需要 4 个反斜杠?

这是我的代码:

cmd = 'C:\\\\Windows\\\\System32\\\\cmd.exe'

cmd = shlex.split(cmd)

subprocess.call(cmd)

当我使用任务管理器检查启动的 cmd.exe 实例的命令行时,它正确显示了路径,每个路径只有一个反斜杠分隔。


因此,我需要在 Windows 上使用它来使路径正常工作:

if platform.platform().startswith('Windows'):
cmd = cmd.replace(os.sep, os.sep + os.sep)

有没有更优雅的解决方案?

最佳答案

部分问题是您正在使用 shlex,它实现了 Unix-ish shell 使用的转义规则。但是您在 Windows 上运行,其命令外壳使用不同的规则。这说明了需要双反斜杠的一个级别(即,绕过 shlex 做的一些你不需要开始的事情)。

您使用的是常规字符串而不是原始字符串 (r"...") 说明了需要双反斜杠的另一个级别,并且 2*2 = 4。QED ;-)

这在 Windows 上运行良好:

cmd = subprocess.call(r"C:\Windows\System32\cmd.exe")

顺便说一下,仔细阅读 subprocess.Popen() 的文档:Windows CreateProcess() API 调用需要一个字符串一个论点。当您改为传递序列时,Python 会尝试通过文档中解释的规则将该序列转换为字符串。如果可行,最好 - 在 Windows 上 - 直接传递你想要的字符串。

关于python - 为什么在 Python 路径中需要 4 个反斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19719971/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com