Python - Errno 2: 没有那个文件或目录
Python - Errno 2: No such file or directory
因此,我正在尝试使用 subprocess.Popen()
在 CMD 中以 "complicated" 方式打开 python 脚本。尽管由于我的 PC 名称中有 space,我无法打开它。我试过使用双引号和单引号,但还是不行。
这是我正在尝试执行的代码行。
subprocess.Popen("cmd.exe /C python '\Users\Terra Byte\Desktop\jdos3\JDOS3\SYS64\bootthingy.py'")
如您所见,我使用单引号将目录路径括起来,但这是我在执行时遇到的错误。
C:\Users\Terra Byte\Desktop\jdos3\JDOS3>python: can't open file ''\Users\Terra': [Errno 2] No such file or directory
好像完全无视我的单引号
切勿尝试将命令名称构建为 字符串。
在这种特殊情况下,请注意单引号对 windows 没有保护作用(与 Linux/Unix 不同),这说明您使用的引号效率低下。使用双引号会起作用,但这不是最好的方法。
当您可以传递 list 参数时,切勿使用字符串。这将起作用:
subprocess.Popen(["python",r'\Users\Terra Byte\Desktop\jdos3\JDOS3\SYS64\bootthingy.py'])
- 使用字符串列表,不加引号,让
subprocess
完成工作
- 删除
cmd /c
前缀,因为 python
前缀就足够了(或者,删除 python
以保留 ["cmd","/c"
并让文件关联完成工作)
- 使用原始字符串前缀避免解释反斜杠
因此,我正在尝试使用 subprocess.Popen()
在 CMD 中以 "complicated" 方式打开 python 脚本。尽管由于我的 PC 名称中有 space,我无法打开它。我试过使用双引号和单引号,但还是不行。
这是我正在尝试执行的代码行。
subprocess.Popen("cmd.exe /C python '\Users\Terra Byte\Desktop\jdos3\JDOS3\SYS64\bootthingy.py'")
如您所见,我使用单引号将目录路径括起来,但这是我在执行时遇到的错误。
C:\Users\Terra Byte\Desktop\jdos3\JDOS3>python: can't open file ''\Users\Terra': [Errno 2] No such file or directory
好像完全无视我的单引号
切勿尝试将命令名称构建为 字符串。
在这种特殊情况下,请注意单引号对 windows 没有保护作用(与 Linux/Unix 不同),这说明您使用的引号效率低下。使用双引号会起作用,但这不是最好的方法。
当您可以传递 list 参数时,切勿使用字符串。这将起作用:
subprocess.Popen(["python",r'\Users\Terra Byte\Desktop\jdos3\JDOS3\SYS64\bootthingy.py'])
- 使用字符串列表,不加引号,让
subprocess
完成工作 - 删除
cmd /c
前缀,因为python
前缀就足够了(或者,删除python
以保留["cmd","/c"
并让文件关联完成工作) - 使用原始字符串前缀避免解释反斜杠