欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python獲取指定名字的程序的文件路徑的兩種方法

 更新時(shí)間:2025年09月03日 11:27:48   作者:Hello,Mr Crab  
本文主要介紹了python獲取指定名字的程序的文件路徑的兩種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

最近在做項(xiàng)目,需要用到給定一個(gè)程序名字就可以自動(dòng)獲取到這個(gè)程序在windows系統(tǒng)下的絕對(duì)路徑,以下是我的兩個(gè)思路:

1.使用os直接遍歷所有磁盤下的所有文件夾,直到找到為止

import os
#示例代碼以尋找微信的WeChat.exe路徑為例,其結(jié)構(gòu)為:

def find_wechat_path_in_windows():
    wechat_path=None
    #獲得所有磁盤分區(qū)
    disk_partitions=psutil.disk_partitions(all=True)
    disks=[disk.mountpoint for disk in disk_partitions]
    #dirs內(nèi)存放每個(gè)磁盤下的所有文件夾列表 os.listdir返回值為list
    dirs=[os.listdir(disk) for disk in disks]
    #使用zip方法將磁盤與其下的所有文件夾列表構(gòu)成鍵值對(duì)
    #形如:{'C':['programfiles','User','programfiles(X86)'],'D':['Games','python312']}
    Paths=dict(zip(disks,dirs))
    #遍歷磁盤下的所有文件夾
    for disk in Paths:
        if 'WeChat' in Paths.get(disk):
            wechat_path=os.path.join(disk,'WeChat','WeChat.exe')
            break
        elif 'Tencent' in Paths.get(disk):
            wechat_path=os.path.join(disk,'Tencent','WeChat','WeChat.exe')
            break
        else:
            folders=[dirname for dirname in Paths.get(disk) if os.path.isdir(os.path.join(disk,dirname))]
            for folder in folders:
                root_dir=os.path.join(disk,folder)
                for dirpath,dirnames,filenames in os.walk(root_dir):
                    if 'WeChat.exe' in filenames:
                        wechat_path=os.path.join(dirpath,'WeChat.exe')
                        break
    return wechat_path
print(find_wechat_path_in_windows())

這樣查找起來(lái)目標(biāo)應(yīng)用程序的路徑十分耗時(shí),特別是當(dāng)你的磁盤內(nèi)的一些文件夾的嵌套深度特別大的時(shí)候(windows系統(tǒng)下文件夾最大嵌套深度為83)

2.先啟動(dòng)要運(yùn)行的程序,然后通過(guò)psutil.process_itar遍歷進(jìn)程池,并比較要查找的微信exe文件與進(jìn)程池中所有進(jìn)程名稱若名稱一致則結(jié)束循環(huán),在這里我們主要用到process_itar返回值中的name與exe屬性,其中name為當(dāng)前正在執(zhí)行的進(jìn)程的名稱,exe為當(dāng)前正在執(zhí)行進(jìn)程的文件路徑

import win32clipboard
import psutil
def find_wechat_path_in_windows(copy_to_clipboard:bool=True):
     '''該方法通過(guò)遍歷當(dāng)前系統(tǒng)下所有進(jìn)程查找正在運(yùn)行的微信的路徑,你可以將Wechat.exe替換為你需        
    要的應(yīng)用
     '''
     for process in psutil.process_iter(['name','exe']):
         if 'WeChat.exe' in process.info['name']:
             wechat_path=process.info['exe']
             break
     if wechat_path:
         if copy_to_clipboard:
             win32clipboard.OpenClipboard()
             win32clipboard.EmptyClipboard()
             win32clipboard.SetClipboardText(wechat_path)
             win32clipboard.CloseClipboard()
             print("已將微信程序路徑復(fù)制到剪貼板")
         return wechat_path
     else:
         print(f'微信未啟動(dòng),請(qǐng)啟動(dòng)后再調(diào)用此函數(shù)!')

相較于第一種方法,第二種方法更加省時(shí)省力

到此這篇關(guān)于python獲取指定名字的程序的文件路徑的兩種方法的文章就介紹到這了,更多相關(guān)python獲取指定名字文件路徑內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論