python - 在Python中执行带空格的Windows路径

标签 python windows

我正在尝试构建一个在 Windows 环境中模仿 Windows 的“运行”功能的程序。现在我知道这听起来有点傻,但我们使用的是“有限”计算机,并且 cmd 完全锁定,因此我们别无选择,只能根据需要构建自己的程序文件。

具体来说,我想做的是一个小实用程序,它将询问驱动器、主题和类(class)编号,并基于此打开完整路径。

i.e. W Python 47 -> w://courses/subjects/python/classes/47 - Arrays & Pointers

我已经用 Python 完成了大部分工作,并达到了最后阶段,我需要仅根据数字获取完整路径,代码如下:

os.system(start 'drive + '://courses/subjects/' + subject + '/classes/' + class')

其中drive、subject和class是保存当前路径数据的变量。

问题在于,当文件路径中有空格时,Windows 无法找到它,并产生错误。

简单的解决方案是加双引号,但由于某种原因,start 命令上的双引号被视为被阻止的 cmd 命令。

关于解决方法的任何想法,或者Python可能不是可行的方法,因此关于不同语言的任何想法都会更容易。 (我有C++、Python、Java基础知识)

附:这不是我正在使用的确切代码,我明天将发布该代码。

最佳答案

start 后的第一个参数是新创建的命令提示符窗口的名称,第二个和第三个参数应分别是应用程序及其参数的路径。

start "" "c:\path with spaces\app.exe" param1 "param with spaces"

如果你想使用os.system,你可以尝试:

norm_path = os.path.normpath("{0}://courses/subjects/{1}/classes/{2}".format (drive, subject, class_name))
os.system('start "" "' + norm_path + '"')

但我可能会使用 os.startfile :

norm_path = os.path.normpath("{0}://courses/subjects/{1}/classes/{2}".format (drive, subject, class_name))
os.startfile( norm_path )

请注意:您不应使用名为class的变量。

关于python - 在Python中执行带空格的Windows路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34582030/

相关文章:

c++ - C++如何判断一个驱动是软盘还是可移动闪存盘?

windows - VC++中如何获取函数的真实地址

c# - Wix 微星包 : for Windows service

python - 为什么 python 日志记录日志文件不按顺序?

Google 的 CoLab 中的 Python 3 支持

python - 基准矩阵乘法性能 : C++ (eigen) is much slower than Python

windows - Windows XP 中的符号链接(symbolic link)

python - ndb.toplevel 会破坏交易吗?

python - 确定字符串是否为 "affirmative"?

c# - 提升进程以管理员身份运行不起作用