问题描述
几天前,我的程序中有一行 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
,但您必须写出该目录中存在的正确文件名。