将 self 解析为列表,而不是字符串

Parse self as list, not string

仍在尝试构建此代码并使其跨平台运行。 我有几个定义因素,有问题的代码引用了这些因素,所以我将全部输入。

self.mainFile = r"\SYS64"
self.dir_path = os.path.dirname(os.path.realpath(__file__))
self.mainOSProgram = "python " + self.dir_path + self.mainFile + r"\jdosos.py"

我已将其与

一起使用
subprocess.Popen(["python",r'\Users\Terra Byte\Desktop\jdos3\JDOS3\SYS64\jdosos.py'])

但这定义了一个路径,当我希望由代码定义路径时,它可以在安装程序的任何地方工作。

我得到同样的错误,python: can't open file 'C:\Users\Terra': [Errno 2] No such file or directory

如果我print(self.mainOSProgram),就是这个结果。

python C:\Users\Terra Byte\Desktop\jdos3\JDOS3\SYS64\jdosos.py

这是正确的文件路径,但它是作为字符串配对的,所以它在第一个 space.

处中断了语句

print(self.mainOSProgram) 按原样输出字符串,所以你得到空格。如果您尝试在命令中添加引号,它将起作用。 python "C:\Users\Terra Byte\Desktop\jdos3\JDOS3\SYS64\jdosos.py"

关于代码我会使用os.path.join构建路径

import subprocess
import os

dir_path = os.path.dirname(os.path.realpath(__file__))

executable_path = os.path.join(dir_path, "SYS64", "jdosos.py")
subprocess.Popen(["python", executable_path])