如何在Python中运行外部程序而不使用整个路径?

2024-04-19 18:22:23 发布

您现在位置:Python中文网/ 问答频道 /正文

现在,我正在开发一个语音控制助手应用程序。你知道吗

当我说“打开谷歌Chrome”时,它应该打开Chrome。我没有任何问题,语音识别,但我有一个问题,启动程序。你知道吗

例如,以下代码:

import os
os.system("chrome.exe")

适用于notepad.execmd.exe程序,但是当我给出像chrome这样的外部程序时,我需要给出整个路径。你知道吗

但是,在C语言中,我们只能使用chrome.exe这样的直接名称来运行程序。你知道吗

所以,我的问题是,有没有什么方法可以启动外部程序而不需要像C#那样给出整个路径?你知道吗

给出启动程序的路径将是一个严重的问题。因为当我们把程序移到另一台计算机上时,我们将面临许多代码错误。你知道吗


Tags: 代码import路径程序名称cmd应用程序os
3条回答

我用C#解决了这个问题。就像我刚才提到的,我们可以直接调用chrome.exe“在C#。我在C中创建了一个控制台应用程序,它使用下面的代码打开GoogleChrome。然后我将控制台应用程序编译为.exe,然后将该exe文件与我的python程序链接。你知道吗

C#

Process ExternalProcess = new Process();
ExternalProcess.StartInfo.FileName = "chrome.exe";
ExternalProcess.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
ExternalProcess.Start();
ExternalProcess.WaitForExit();

Python

import os
os.system('console_application.exe')

这个答案的第一部分是特定于操作系统的,而不是用代码或python来解决它

将Chrome存在的路径添加到PATH变量中(您可能需要重新启动),然后当您执行诸如chrome.exe之类的命令时,它将尝试从该路径位置运行它

更新: 如果您想实现对绝对路径的搜索,这里有一些关于路径列表How do I list all files of a directory?的好资源

不过,您可能需要一些有根据的猜测,并且需要做一些特定于操作系统的事情来找到它。你知道吗

Chrome二进制文件通常安装在同一组位置

PATH系统变量在Python内部和外部一样管理这个函数。如果您想从Python修改它,它是os.environ。你知道吗

另一方面,更好的解决方案可能是使用subprocess,正如os.system文档中所建议的那样。你知道吗

不管怎样,PATH操作都是相同的。你知道吗

import os
import subprocess

os.environ['PATH'] = os.environ['PATH'] + r';c:\google\chrome\'
subprocess.run(['chrome.exe'])

。。。显然,您需要将包含chrome.exe的目录添加到PATH。你知道吗

不过,在您的场景中运行Python之前,您可能需要确保PATH是正确的。你知道吗

相关问题 更多 >