溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python實(shí)現(xiàn)移動(dòng)硬盤的案例

發(fā)布時(shí)間:2020-07-20 13:59:41 來源:億速云 閱讀:486 作者:清晨 欄目:編程語言

這篇文章將為大家詳細(xì)講解有關(guān)Python實(shí)現(xiàn)移動(dòng)硬盤的案例,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

1、目標(biāo)場(chǎng)景

用過Mac OS的朋友應(yīng)該都遇到過,日常的文件操作會(huì)在同級(jí)目錄下產(chǎn)生一些特定的臨時(shí)文件。

平常將文件夾打包成壓縮包或拷貝文件夾到移動(dòng)硬盤內(nèi),臨時(shí)文件會(huì)包含在里面,如果是程序源代碼,在Windows系統(tǒng)下編譯有時(shí)候還會(huì)受到影響。

本篇文章的目的是在移動(dòng)硬盤插入到電腦的同時(shí),利用Python自動(dòng)化和Windows服務(wù)刪除掉這些臨時(shí)文件。

2、編寫代碼

首先,我們需要循環(huán)檢測(cè)PC的驅(qū)動(dòng)器,判斷是否存在可移動(dòng)的磁盤。

# 循環(huán)遍歷,對(duì)每一個(gè)驅(qū)動(dòng)器進(jìn)行判斷
while True:
        for item in disk_partitions():
            if 'removable' in item.opts:
                driver, opts = item.device, item.opts
                # 刪除臨時(shí)文件
                pass
                break
            else:
                continue
        # 休眠5s,繼續(xù)遍歷
        sleep(5)

如果檢測(cè)到存在可移動(dòng)的磁盤,就遍歷文件,刪除Mac臨時(shí)文件。

def remove_all_file(filepath, file_name):
    """
    刪除 MAC 臨時(shí)文件
    :param file_name:
    :return:
    """
    for root, dirs, files in os.walk(filepath):
        for name in files:
            print(name)
            if name.startswith("._") or name == file_name:
                os.remove(os.path.join(root, name))

接著,我們利用pyinstaller將Python文件打包成Exe可執(zhí)行文件。

# 安裝 pyinstaller 
pip3 install pyinstaller 
# 把 py 文件打包成 exe 可執(zhí)行文件
# 圖標(biāo):img.ico
pyinstaller -F -i img.ico  del_mac_files.py

為了保證程序一直在后臺(tái)運(yùn)行,我們需要?jiǎng)?chuàng)建一個(gè)系統(tǒng)服務(wù),讓將可執(zhí)行文件一直在后臺(tái)執(zhí)行。

instsrv.exe和srvany.exe這兩個(gè)文件可以非常方便的創(chuàng)建系統(tǒng)服務(wù)。其中,instsrv.exe用于創(chuàng)建、刪除服務(wù);srvany.exe用于保障服務(wù)能正常啟動(dòng)。

# 注冊(cè)服務(wù)
# instsrv.exe 服務(wù)名 
srvany.exec:\instsrv.exe del_mac_tempfile c:\srvany.exe

需要注意的是,運(yùn)行注冊(cè)服務(wù)命令時(shí),需要以管理員權(quán)限運(yùn)行CMD來執(zhí)行。

注冊(cè)完服務(wù)之后,還需要通過注冊(cè)表把服務(wù)和可執(zhí)行程序關(guān)聯(lián)起來。

# 注冊(cè)表服務(wù)的目錄
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\

在注冊(cè)表中找到上面創(chuàng)建的服務(wù),新建一個(gè)Parameters的項(xiàng),在項(xiàng)內(nèi)再創(chuàng)建兩個(gè)字符串,分別指向可執(zhí)行文件和可執(zhí)行文件的完整目錄。

Python實(shí)現(xiàn)移動(dòng)硬盤的案例

最后,services.msc命令打開服務(wù)管理,找到目標(biāo)服務(wù),設(shè)置允許服務(wù)和桌面交互,設(shè)置開啟服務(wù)并設(shè)置為自啟。

Python實(shí)現(xiàn)移動(dòng)硬盤的案例

3、結(jié) 果 結(jié) 論

通過以上注冊(cè)的服務(wù),每次插入移動(dòng)硬盤,都會(huì)自動(dòng)去遍歷移動(dòng)硬盤盤的文件,查找Mac臨時(shí)文件并刪除。

關(guān)于Python實(shí)現(xiàn)移動(dòng)硬盤的案例就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI