Python 查找pdf查看器的路径

Python 查找pdf查看器的路径,python,pdf,pdf-viewer,Python,Pdf,Pdf Viewer,我只得到了一些pdf查看器的名字 1) 我想检查一下,这个pdf查看器是否存在 2) 如果这个pdf查看器存在,我想找到它的路径 我不知道该怎么做。如果你在Linux中,你可以使用终端命令。如果PDF viewer具有命令行工具,则可以执行以下简单操作: import subprocess check = subprocess.check_output(['which', 'ls']) print check 否则,您可以运行独立于操作系统的漫游并搜索文件名,如下所示: import os

我只得到了一些
pdf查看器的名字

1) 我想检查一下,这个
pdf查看器是否存在

2) 如果这个pdf查看器存在,我想找到它的路径


我不知道该怎么做。

如果你在Linux中,你可以使用终端命令。如果PDF viewer具有命令行工具,则可以执行以下简单操作:

import subprocess
check = subprocess.check_output(['which', 'ls'])
print check
否则,您可以运行独立于操作系统的漫游并搜索文件名,如下所示:

import os

matches = []
for root, dirs, files in os.walk(os.path.join('path', 'to', 'search'):
    for file in files:
        if 'pdf-viewer' in file.lower():
            filepath = os.path.join(root, file)
            matches.append(filepath)

print matches
这将遍历Mac/Linux上从“/path/to/search”开始的所有目录,或PC上从\path\to\search开始的所有目录。它将搜索每个目录中的所有文件名以查找匹配项,在本例中忽略大小写。如果找到匹配项,它将重新创建当前目录的绝对路径和匹配的文件名,并将其附加到匹配项列表中。然后,您可以对匹配列表执行任何操作


关于如何使用os.Walk()函数,有很多信息,但是如果您使用的是Python 2.7,我建议您安装ScanDir,它速度更快(Python 3的默认设置)。

哪种操作系统?它是Linux。但这是否取决于操作系统?在pdf查看器的情况下,这是否为我提供了唯一匹配?我不确定您所说的唯一匹配是什么意思。它将显示系统中与字符串“pdf查看器”匹配的任何文件。如果要匹配精确的文件名,请将行:
If'pdf viewer in file.lower():
更改为
If'pdf viewer'==file:
请记住,这样做只会匹配精确的文件名,因此如果文件具有扩展名,如.app或.exe,则不会返回结果。