Python-Errno 2:没有这样的文件或目录

Python-Errno 2:没有这样的文件或目录,python,cmd,errno,Python,Cmd,Errno,因此,我试图使用subprocess.Popen()以“复杂”的方式打开python脚本。虽然我无法打开它,因为我的电脑名中有空格。我试过使用双引号和单引号,但仍然不起作用 这是我试图执行的代码行 subprocess.Popen(“cmd.exe/C python'\Users\Terra Byte\Desktop\jdos3\jdos3\SYS64\bootthingy.py') 如您所见,我使用单引号来包装目录路径,但这是我在执行时遇到的错误 C:\Users\Terra Byte\De

因此,我试图使用
subprocess.Popen()
以“复杂”的方式打开python脚本。虽然我无法打开它,因为我的电脑名中有空格。我试过使用双引号和单引号,但仍然不起作用

这是我试图执行的代码行

subprocess.Popen(“cmd.exe/C python'\Users\Terra Byte\Desktop\jdos3\jdos3\SYS64\bootthingy.py')
如您所见,我使用单引号来包装目录路径,但这是我在执行时遇到的错误

C:\Users\Terra Byte\Desktop\jdos3\jdos3>python:无法打开文件“”\Users\Terra:[Errno 2]没有这样的文件或目录

它似乎完全忽略了我的单引号。

永远不要尝试将命令名构建为字符串

在这种特殊情况下,请注意单引号对windows没有保护作用(与Linux/Unix不同),这解释了您使用的引号效率低下。使用双引号可能会奏效,但这不是最好的方法

当可以传递参数列表时,切勿使用字符串。这将有助于:

subprocess.Popen(["python",r'\Users\Terra Byte\Desktop\jdos3\JDOS3\SYS64\bootthingy.py'])
  • 使用未加引号的字符串列表,并让
    子流程
    完成工作
  • 删除
    cmd/c
    前缀,因为
    python
    前缀就足够了(或者,删除
    python
    以离开
    [“cmd”、“/c”
    ,让文件关联完成工作)
  • 使用原始字符串前缀以避免解释反斜杠
将参数作为列表传递,并使用原始字符串。