999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Python+SQLite的文件整理軟件設計與實現

2024-04-14 02:13:33李瑞洋周全興
現代信息科技 2024年1期

李瑞洋 周全興

DOI:10.19850/j.cnki.2096-4706.2024.01.006

收稿日期:2023-06-19

基金項目:凱里學院教學內容與課程體系改革項目(JG202110,JG202109);凱里學院做特市州高校專項計劃項目(院辦發〔2022〕10號-32);貴州省普通高等學校青年科技人才成長項目(黔教合KY字〔2020〕179,黔教合KY字〔2020〕180);貴州省科技計劃項目(黔科合基礎-ZK〔2023〕一般440)

摘? 要:針對計算機中存儲的文件日漸繁多,用于整理歸納的時間逐年上升的問題,采用Python中自帶的os、date time、SQLite3、threading、hashlib和tkinter等數據庫設計一款文件整理軟件。該軟件主要提供處理重復文件、提取目錄下文件并重命名文件等功能。測試結果表明,該文件整理軟件操作便捷,其整理效率遠遠高于傳統整理方式,尤其是文件量大的情況下效果更明顯。

關鍵詞:Python;SQLite數據庫;文件整理

中圖分類號:TP311? 文獻標識碼:A? 文章編號:2096-4706(2024)01-0028-05

Design and Implementation of File Organizing Software Based on Python+SQLite

LI Ruiyang, ZHOU Quanxing

(School of Big Data Engineering, Kaili University, Kaili? 556011, China)

Abstract: In response to the increasing number of files stored in computers and the increasing time required for organizing and summarizing, a file organizing software is designed using Python's built-in databases such as os, date time, SQLite3, threading, hashlib, and tkiner. This software mainly provides functions such as handling duplicate files, extracting files from directories, and renaming files. The test results show that the file organizing software is easy to operate, and its organizing efficiency is much higher than traditional organizing methods, especially when the file volume is large.

Keywords: Python; SQLite database; file organizing

0? 引? 言

在當今這個信息爆炸的時代[1],我們經常會遇到需要整理大量文件的情況,這些文件可能包括照片、文檔、視頻,等等。然而,由于不同來源的文件命名方式不同、保存路徑不同,或者因為多次備份導致文件重復等問題,文件整理變得十分麻煩和耗時。針對這個問題,設計和實現了一款文件整理軟件,該軟件可以幫助用戶快速和方便地處理重復文件、提取目錄下所有子目錄中的文件并復制到指定目錄、按照時間戳來重命名文件等任務,以提高用戶的工作效率和便利性。通過比較兩款既存軟件Duplicate Cleaner與Easy Duplicate Finder,我們發現他們存在一定缺點,如表1所示。相較以上兩款軟件,設計一款軟件體積更小、不收費、界面簡潔并能滿足用戶需求的軟件非常有必要。據此,針對界面上繁雜的缺點,著重就以簡潔的方式表達功能按鍵及使用的角度出發進行設計。

1? 總體設計

1.1? 功能需求分析與設計

計算機輔助檔案實體整理中的問題:建立合理的文件實體分類方案、正確提取文件實體的屬性信息、保持實體整理過程的連續性、做好每一個整理環節的質量控制[2]中所提及的概念在計算機仍然適用。電腦中的一個個文件也好比一個個文件實體,計算機文件中也存在屬性信息。通過對文件整理類工具的調研,發現對程序化整理文件的需求主要體現為:篩選重復的文件、對文件從子目錄中進行提取、對文件批量按照指定格式重命名這三個方面;但市面上往往有屬于英文界面,漢化包少、功能繁雜,界面設計對用戶不友好的缺陷。因此,包括以下功能的文件整理軟件——《文件秘書》誕生,軟件界面如圖1所示。

1)刪除重復文件:該功能主要可以刪除任意目錄下的重復文件,或者銷毀整個文件夾,并在輸入路徑的根目錄處留下文件索引。

2)移動文件:該功能可以將輸入路徑下所有子目錄中的文件提取到指定目錄下,使用時需要確保根目錄處沒有相同文件。

3)重命名文件:該功能可以根據文件屬性中修改時間來重命名文件。

4)撤銷操作:該功能可以根據查詢前三個操作給出的記錄表撤銷操作。

1.2? 開發語言環境與架構設計

程序基于Python的os[3]、datetime[4]、SQLite3[5]、threading[6]、hashlib[7]、tkinter[8]模塊進行實現,分為操作界面于后臺數據庫儲存兩方面。操作界面主要采用tkinter庫中的grid布局[9],以網格化結構對各空間排列安放,后臺數據庫采用SQLite數據庫。

2? 程序詳細設計與實現

2.1? 功能模塊設計

程序由前端操作界面于后臺數據庫儲存兩方面構成。前端操作界面采用tk模塊進行構造;后臺數據庫采用SQLite數據庫,主要記錄運行日志、歷史操作、文件索引。

2.2? 文件可視化界面設計

為了方便用戶使用,設計了一個簡單的文件可視化界面,以供用戶進行文件整理操作。具體實現方式為:

1)主界面:在主界面上,采用grid方式網格化布局,界面從中間被一分為二,左側是該程序的使用,右側是有關該程序的信息(版本號、使用說明等)。

左側的界面由一個輸入框、快捷輸入按鈕、一個滑動條、一個勾選框以及四個按鈕構成。其中,輸入框及快捷輸入按鈕用于獲取用戶所期望處理的路徑;滑動條及勾選框用于獲取用戶的指定需求,按鈕用于用戶確定并反饋程序讓其執行。

2)各frame:frame被安放在主界面上,用于完善布局,使希望被統一布局的控件可以被一并布局,使界面更加美觀。

2.3? 目標對象輸入

目標對象主要分為三個,有需要處理的目錄路徑、恢復先前操作的表名以及需要恢復的文件索引。

對需要處理的目錄路徑:我們主要采用兩種方法獲取,一個是由用戶自行復制粘貼需要處理的目錄路徑;另一個是讓用戶點擊我們設計并于輸入框右側放置的一個選項框,當用戶點擊了按鈕buttonForAskDir后,其會調用tk中的filedialog.askdirectory方法。此時用戶會看到一個系統自帶的文件管理器的彈出界面,用戶在該界面內選擇即可獲取文件路徑。

2.4? 執行指定操作

當用戶點擊相應按鈕后,按鈕會調用一個threading模塊中Thread的方法,由其創造一個新的線程并且讓實際執行的操作運行。本設計的主要目的是將執行的內容放到一個獨立于窗口的線程中避免窗口出現“未響應”的異常。軟件主要功能如圖2所示。

其各操作細節為:

1)刪除重復文件:在這個功能中,采用計算哈希值的方式來判斷文件是否重復。Python中的hashlib庫提供了簡便的方式對文件進行哈希值的計算,只要通過hashlib.md5獲得文件的md5值或通過hashlib.sha1獲得文件的sha1值就能夠獲得文件的摘要信息,在不考慮撞庫的情況下,用這種方法識別以及篩選出重復文件是可行的。簡單來說,通過hashlib模塊計算文件的md5和sha1哈希值來獲取文件的唯一標識符,并將該標識符存儲在一列表中用于比對是否存在。

在刪除重復文件時,首先需要遍歷整個目錄樹,并對每個文件進行哈希值計算和查找。如果發現某個文件已經存在于數據庫中,則說明該文件是重復文件,可以刪除。否則,將該文件的哈希值存儲到數據庫中,以便后續比較。

在銷毀整個文件夾時,需要先建立數據庫索引并將原有文件移動至回收站或md5庫,再留下索引部分,以確保文件可以被恢復。

2)移動文件:在這個功能中,需要遞歸遍歷輸入路徑下的所有子目錄,并將每個文件移動到指定目錄。該功能主要的實現方式是通過Python的os模塊中的remove進行實現。

3)重命名文件:在這個功能中,主要是通過獲取文件修改時間來重命名文件。由于不同操作系統對時間格式的定義可能會有所差異,因此需要通過time模塊將時間戳轉換為指定的時間格式,并將該格式與原有文件名拼接在一起,即可實現文件重命名,如圖3、4所示。

其中,由于多處涉及文件時間獲取,故寫函數:

def getPathTime(path):? # 獲取文件時間#以最后一次修改時間作為文件時間#gPT

taskBeginTime = time.time()

if not os.path.exists(path):

taskrecord(taskBeginTime, 'gPT-"not exist"')

return False

pathtime = os.stat(path).st_mtime

pathtime = str(turnTimeStampToFormatTime(pathtime)) + '-' + str(pathtime)

taskrecord(taskBeginTime, 'gPT')

return pathtime

2.5? 數據庫設計

本程序數據庫采用SQLite數據庫,主要記錄:運行日志、處理過程、文件索引,由于建立文件索引時數據庫路徑與程序記錄用數據庫不同,故數據庫連接對象不同,特寫如下方法獲得數據庫對象:

def formatdatabase(databasepath):

# 創建連接對象

connectionobject = sqlite3.connect(databasepath+'.db', timeout=10, check_same_thread=False)

# 創建游標對象

cursorobject = connectionobject.cursor()

connectionobject.execute("create table if not exists 數據庫訪問log(開啟時間 primary key,關閉時間,版本號)")

# 如果只插入一個元素要在其后面加逗號讓它變元組

connectionobject.execute("insert into 數據庫訪問log(開啟時間,版本號)values(?,?)",(time.time(), version))

connectionobject.execute("create table if not exists 錯誤log(錯誤時間 primary key,錯誤內容,錯誤時表名,錯誤時路徑)")

connectionobject.execute("create table if not exists 任務、對應表名、點擊位置log(任務開始時間 primary key,開啟時間,任務內容,表名,x,y,任務結束時間)")

connectionobject.execute("create table if not exists 函數調用log(任務開始時間 primary key,開啟時間,調用函數名,任務結束時間)")

connectionobject.execute("create table if not exists 輸入log(任務開始時間 primary key,開啟時間,輸入內容)")

connectionobject.execute("create table if not exists 彈出窗log(提示時間 primary key,開啟時間,彈出內容)")

connectionobject.execute("create table if not exists 移動log(移動時刻 primary key,原文件位置,現文件位置,異常)")

connectionobject.execute("create table if not exists 空文件夾清除log(清除時刻 primary key,被清除路徑,異常)")

connectionobject.execute("create table if not exists 窗口鼠標位置log(存在時刻 primary key,x,y,異常)")

connectionobject.execute("create table if not exists 全局鼠標位置log(存在時刻 primary key,x,y,異常)")

connectionobject.commit()

return connectionobject,cursorobject

運行日志:于程序根目錄下一“文件秘書的數據庫.db”的數據庫文件中通過多張表(數據庫訪問log、錯誤log、任務、對應表名、點擊位置log、函數調用log、輸入log、彈出窗log、移動log、空文件夾清除log、窗口鼠標位置log)記錄程序運行中的各個方面的信息,以便于后續的監控、調試和優化,其中數據庫訪問log的實例如圖5所示。

處理過程:于程序根目錄下一“文件秘書的數據庫.db”的數據庫文件中通過以處理時間+處理路徑形式命名的表中根據處理要求的不同以單個文件處理時間為主鍵、儲存其余相關信息以供后續撤銷需求。

文件索引:適用于處理重復文件中以保留索引形式處理選項。里面使用一表“以哈希分類法處理的文件指向”保存處理前后地址供后續恢復操作。

3? 功能測試與效果分析

黑盒測試:我們經過對每個功能的測試,發現各功能均正常運行且無誤,具體測試內容如表2所示。

測試用文件夾為C:\text,測試用文件夾內含有以下文件:C:/text/新建BMP圖像.BMP、C:/text/新建Microsoft PowerPoint演示文稿-副本.pptx、C:/text/新建 Microsoft PowerPoint演示文稿.pptx、C:/text/新建Microsoft Word文檔.docx、C:/text/新建文件夾、C:/text/新建文件夾/新建Microsoft PowerPoint演示文稿.pptx、C:/text/新建Microsoft Word文檔.docx。

測試內容包括輸入框輸入、按鈕“處理重復文件”“提取目錄下文件”“重命名文件”“撤銷操作”按鈕、滑塊滑動及勾選框選擇。

綜上,我們經過了多輪的功能測試,并對結果進行了分析和總結。測試結果表明,本文件整理軟件確實可以快速和準確地處理重復文件、提取目錄下所有子目錄中的文件并復制到指定目錄、按照時間戳來重命名文件等任務。同時,我們的界面設計簡潔易用,用戶可以方便地完成不同的操作。

4? 結? 論

本文介紹了一款基于Python語言和SQLite數據庫的文件整理軟件的設計和實現過程。該工具包括處理重復文件、提取目錄文件、按照時間戳來重命名文件等功能,具有簡單易用、靈活性強、運行效率高的特點。測試結果表明,該工具可以有效地提高用戶的工作效率和便利性,適合需要整理大量文件的個人用戶使用。未來隨著人工智能和自動化技術的不斷發展,文件整理軟件將變得越來越智能和高效。

參考文獻:

[1] 李路.信息爆炸與數據分類 [J].現代農業科技,2011(9):35+37.

[2] 張明和,薛惠芬,侯秀生.計算機輔助檔案實體整理的幾個關鍵問題 [J].中國科技信息,2010(4):174-175.

[3] os — Miscellaneous operating system interfaces [EB/OL].[2023-09-27].https://docs.python.org/3/library/os.html.

[4] datetime — Basic date and time types [EB/OL].[2023-09-27].https://docs.python.org/3/library/datetime.html.

[5] SQLite3 — DB-API 2.0 interface for SQLite databases [EB/OL].[2023-09-27].https://docs.python.org/3/library/SQLite3.html.

[6] threading — Thread-based parallelism [EB/OL].[2023-09-28].https://docs.python.org/3/library/threading.html.

[7] hashlib — Secure hashes and message digests [EB/OL].[2023-09-28].https://docs.python.org/3/library/hashlib.html.

[8] tkinter — Python interface to Tcl/Tk [EB/OL].[2023-09-20].https://docs.python.org/3/library/tkinter.html.

[9] tkinter的grid布局定位方式圖示詳解[EB/OL].[2023-09-20].https://blog.csdn.net/hyf64/article/details/121427887.

作者簡介:李瑞洋(2004—),男,漢族,福建福州人,本科在讀,主要研究方向:計算機科學與技術專業;通訊作者:周全興(1987—),男,漢族,貴州綏陽人,副教授,學士,主要研究方向:數據分析、區塊鏈技術。

主站蜘蛛池模板: 久久综合丝袜日本网| 欧美成人看片一区二区三区| 最新国产你懂的在线网址| 欧美精品啪啪| 亚洲欧美另类日本| 国产99视频免费精品是看6| 热这里只有精品国产热门精品| 国产在线无码av完整版在线观看| 色综合天天娱乐综合网| 欧美在线国产| 亚洲天堂视频网| 亚洲日韩精品欧美中文字幕| 精品福利国产| 日韩福利在线观看| 日韩在线欧美在线| 久久综合九色综合97网| 国产成人亚洲毛片| 国产成人精品视频一区二区电影 | 美女一级免费毛片| 99er精品视频| 91精品情国产情侣高潮对白蜜| 天堂成人av| 精品欧美日韩国产日漫一区不卡| 亚洲日本中文综合在线| 欧美笫一页| 国产又爽又黄无遮挡免费观看 | 国产SUV精品一区二区| 毛片免费试看| 日韩精品亚洲一区中文字幕| 国产精品福利一区二区久久| 亚洲无码高清视频在线观看 | 久草视频精品| 久久久亚洲色| 91成人精品视频| 免费jjzz在在线播放国产| 久久精品国产电影| 亚洲一区二区约美女探花| 四虎国产在线观看| 亚洲一区网站| 视频一区视频二区日韩专区| 亚洲一区二区三区香蕉| 国产精品国产主播在线观看| 欧美精品不卡| 2021亚洲精品不卡a| 99精品视频播放| 精品91在线| 久久久久青草线综合超碰| 国产成人精品第一区二区| 亚洲最大看欧美片网站地址| 99精品国产自在现线观看| 日韩欧美视频第一区在线观看| 国产小视频在线高清播放| 日韩在线1| 久久国产高清视频| 精品人妻AV区| 色偷偷综合网| 亚洲第一在线播放| 亚洲一区精品视频在线| 在线精品亚洲一区二区古装| 乱人伦99久久| 亚洲欧美综合在线观看| 91精品啪在线观看国产91| 狠狠综合久久| 激情五月婷婷综合网| 欧美精品亚洲精品日韩专区| 波多野结衣中文字幕一区| 91精品国产无线乱码在线| 亚洲成人一区二区三区| 五月婷婷丁香综合| 精品国产91爱| 国产成人久久777777| 国产成人综合久久精品下载| 欧美综合一区二区三区| 99精品伊人久久久大香线蕉| 国产成人久视频免费| 高清不卡一区二区三区香蕉| 精品1区2区3区| 国内精品自在自线视频香蕉| 国产第一色| www.91在线播放| 亚洲国产成人精品一二区 | h视频在线观看网站|