如何在Python中打开任何程序?

时间:2018-01-28 06:23:43

标签: python python-3.x python-2.7 operating-system

我搜索了很多,并找到了在python中打开程序的不同方法,

例如: -

import os
os.startfile(path) # I have to give a whole path that is not possible to give a full path for every program/software in my case.

我正在使用的第二个

import os
os.system(fileName+'.exe')

在第二个例子中,问题是: -

  1. 如果我想打开计算器,那么它的.exe文件名是calc.exe,这也适用于任何其他程序(我不知道每个程序的所有.exe文件名)。< / LI>
  2. 并假设如果我编写了所有硬编码的程序名称,那么如果用户安装了任何新程序,该怎么办? (我的程序无法打开该程序?)
  3. 如果没有其他方法可以在python中打开程序,那么是否可以获取用户计算机中所有安装程序的列表。 那里有.exe文件名(例如: - 计算器是calc.exe你明白了。)

    如果你想看看code

    注意:我想要通用解决方案。

3 个答案:

答案 0 :(得分:2)

总是:

from subprocess import call
call(["calc.exe"])

这应该允许您使用字典或列表或设置来保存您的程序名称并随意调用它们。 David Cournapeau和chobok也在this answer中介绍了这一点。

答案 1 :(得分:1)

您可以尝试使用os.walk:

import os

exe_list=[]

for root, dirs, files in os.walk("."):
 #print (dirs)
 for j in dirs:
  for i in files:
   if i.endswith('.exe'):
     #p=os.getcwd()+'/'+j+'/'+i
     p=root+'/'+j+'/'+i
     #print(p)
     exe_list.append(p)


for i in exe_list :
  print('index : {} file :{}'.format(exe_list.index(i),i.split('/')[-1]))

ip=int(input('Enter index of file :'))

print('executing {}...'.format(exe_list[ip]))
os.system(exe_list[ip])
  1. os.getcwd()+'/'+i将文件路径添加到从root开始的 exe 文件中。
  2. exe_list.index(i),i.split('/')[-1]仅提取filename.exe
  3. exe_list 在每个索引处存储exe文件的完整路径

答案 2 :(得分:1)

可以通过winapps完成

首先通过键入以下命令安装winapps:

pip install winapps

之后使用库:

# This will give you list of installed applications along with some information

import winapps 

for app in winapps.list_installed(): 
    print(app)

如果您要搜索应用程序,可以执行以下操作:

application = 'chrome'

for app in winapps.search_installed(application): 
    print(app)