我正确使用 os.system 吗?我的应用程序将不再打开

问题描述

几天前,我的程序中有一行 os.system(r"C:\Users\red\Desktop\Test UI")。我测试了它,它运行良好,它打开了我想要的应用程序。

现在,我在大约五天后回到它,突然它无法正常工作。我检查了进程,它说 'C:\Users\red\Desktop\Test' is not recognized as an internal or external command,operable program,or batch file.

我已经查看了关于 os.system 的其他问题,如 How do I execute a program from Python? os.system fails due to spaces in path,但我已经在使用原始字符串,如建议的答案之一。我不明白它是如何在某一天工作的,然后它在没有改变的情况下无法工作。

解决方法

我们最近用 subprocess.run 替换了 os.system,因为 Windows 上的路径出现了一些问题。

对于这个例子,你可以替换

os.system(r"C:\Users\red\Desktop\Test UI")

subprocess.run(r'"C:\Users\red\Desktop\Test UI"',shell=True)

对于 Windows 快捷方式,我必须在调用中添加 .lnk 扩展名:

subprocess.run(r'"C:\Users\red\Desktop\Test UI.lnk"',shell=True)
,

我想通了。出于某种原因, os.system 停止工作,并且 subprocess.run 或 subprocess.call 不起作用。我将命令改为使用 os.startfile,它开始正常工作。

这是最终结果:

os.startfile(r"C:\Users\red\Desktop\Test UI")
,

实际上,您正在使用正确的命令来执行文件,但是您要执行的文件并不存在于该目录中。当文件不在目录路径中时会发生错误 'C:\users...' is not not recognized as an internal or external command,operable program,or batch file

不需要在文件名后写.exe,但您必须写出该目录中存在的正确文件名。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...