猜您喜歡:
批量刪除同名電子書能夠批量刪除同名的電子書,幫助用戶清理書庫文件,軟件基于Python開發(fā),相信大家平時(shí)生活中都會(huì)遇到儲(chǔ)存大量的電子書,卻發(fā)現(xiàn)很多電子書內(nèi)容一樣只是格式不同,白白占用了很多內(nèi)存,用戶使用這款軟件能夠快速清除相同格式的電子書,只留下epub格式的。
昨晚和朋友聊微信,突然想起盤里的200多G電子書,有很多格式相同的,太占容量了,5萬多本,占了快200多G,手動(dòng)刪除了一些不感興趣的書籍。和朋友討論如果寫代碼來刪除一些同名但格式不同的電子書,處理流程應(yīng)該怎么樣。后來朋友突然說,其實(shí)用數(shù)據(jù)庫也可以弄,而且很快:
第一步:用bat批處理遍歷子目錄的文件路徑,我測試發(fā)現(xiàn),5萬多本的電子書,生成路徑文本不用3秒就完成了,4M大小的文本。
第二步:導(dǎo)到數(shù)據(jù)庫,分割出文件名,不帶后綴名那種 ,排序,加上編號(hào),然后拼接上絕對(duì)路徑,再刪除指定編號(hào)的(刪除是為了保留同名的某一本電子書),剩下的就是同名且格式不同的電子書路徑了。
第三步:在數(shù)據(jù)庫上,給每行路徑前加del /F /S /Q 命令,導(dǎo)出為文本,改后綴為bat,運(yùn)行,即可把所有同名的電子書刪除。
然后我就想了一下,還寫啥程序,這用數(shù)據(jù)庫,一下就能完成的事,寫程序還要花一天時(shí)間,太傻了。。。然后因?yàn)椴欢當(dāng)?shù)據(jù)庫,昨晚是用excel對(duì)5萬多行的電子書進(jìn)行分列,拼接等等處理,不熟悉,一邊百度一邊弄的。。。。還是忙了2小時(shí),不懂?dāng)?shù)據(jù)庫真慘。。。今天一早起來,覺得還是不爽,我的電子書是處理完了,廣大的吾友小書庫滿了怎么辦,不懂程序的吾友,清理又不方便,所以還是嗑嗑碰碰,絞盡腦汁花了一天,寫到現(xiàn)在發(fā)貼才寫完python小工具《批量刪除同名電子書 僅保留一本指定的格式》
第一步:雙擊運(yùn)行《python小工具-批量刪除同名電子保留指定格式》,默認(rèn)是按epub>mobi>azw3>pdf>doc>chm>html>txt 順序來保留電子書,簡單說,如果你電腦里不同的文件夾里同時(shí)存在著多種格式的同一個(gè)名字的電子書,且其中有一本格式是epub,那么程序會(huì)保留epub格式的,如果沒有epub,只有其它格式,程序會(huì)依上面的順序,依次判斷,最后,如果你的電子書格式在上面都沒有,例如是ppt格式的,程序會(huì)自動(dòng)保留一本,其它的一律刪除。之所以優(yōu)先保留epub,是因?yàn)槠?a class="dict" href="/zhuanti/yasuoXZ.html">壓縮率相對(duì)mobi高點(diǎn),體積小點(diǎn),兩者排版差不多,以上關(guān)于epub和mobi的壓縮率大小是我百度的。
第二步:回車后,會(huì)彈出窗口,你選擇電子書所在的目錄就行,會(huì)遍歷子目錄,列舉出所有的電子書路徑,千萬不要選其它什么電腦軟件或者非電子書的目錄,免得把你電腦軟件的一些文件誤刪除。第三步:選完電子書目錄后,靜心等待就行,稍等片刻,會(huì)輸出正在刪除xxx路徑電子書的字樣,當(dāng)有些電子書文件是只讀屬性, 會(huì)自動(dòng)調(diào)用cmd命令強(qiáng)制刪除。第四步:當(dāng)刪除完畢后,會(huì)自動(dòng)打開電子書所在的目錄,到這一步,已經(jīng)是完成整理了哦,看看你的硬盤省了多少內(nèi)存(貌似是電子書是刪除到回收站了,測試時(shí)沒有留意,建議執(zhí)行完畢后,清理一次回收站,再看看硬盤省下多少容量)。第五步:用下面我提供的 批量刪除空文件夾軟件,批量刪除空的電子書目錄。完美,哈哈。注意事項(xiàng):打個(gè)比方,如果你想優(yōu)先保留azw3格式的電子書,不要其它格式的,那就修改源碼中的[("azw3", "AZW3"),("epub","EPUB"),("mobi","MOBI"),("pdf","PDF"),("doc","DOC"),("chm","CHM"),("html","HTML"),("txt",列表里的元組順序。有編程底子的應(yīng)該懂,這是列表里嵌入了元組。如果不懂編程的,修改時(shí),要特別注意逗號(hào)大小寫這些。
送到嘴上吧:打包了多種優(yōu)先順序不一樣的exe,自行挑選使用那個(gè)
請(qǐng)先復(fù)制一些相同名字但不同格式的電子書,分別扔到幾個(gè)子目錄文件夾里,用我的軟件自行測試幾次,觀察使用后的結(jié)果是否和你預(yù)期的結(jié)果一致,再對(duì)自己的電子書庫大批量使用。免得誤刪了你的電子書了,豈不找我拼命。
批量刪除完同名電子書后,可能會(huì)有一些目錄是空的,此是就用它來批量清理空目錄
批量刪除空文件夾的使用教程:
記得勾上下面的兩個(gè)勾,否則不會(huì)刪除空的子目錄。
如果你想用數(shù)據(jù)庫或excel來批量刪除,可以下載下面這個(gè)批處理,提取絕對(duì)路徑:批處理 遍歷所有目錄及子目錄的文件路徑
from tkinter.filedialog import * #這個(gè)主要作用是os模塊 刪除文件,和運(yùn)行時(shí)彈出,讓你們選擇要?jiǎng)h除書籍的目錄。
from operator import itemgetter #這個(gè)模塊好像可以根據(jù)2個(gè)條件來排序,下面用來根據(jù) 書名和后綴名 排序.
from os import startfile
#下面可能有些功能或變量是多少余的,算法不精,時(shí)間來湊,只能用比較笨的方法來實(shí)現(xiàn)。
# 整體思路:
# 和上面的excel處理差不多,都是先列舉出電子書路徑,然后根據(jù)相同的書名對(duì)路徑排序,再剔除只有一本的書的路徑,剩下的就是重復(fù)的書本路徑了,然后再根據(jù)算法判斷,優(yōu)先剔除epub格#式的,其次是mobi,再到azw3,再到pdf,再到。。。。。。,如果指定的格式都沒有,就從重復(fù)的路徑列表中,去除第一個(gè)路徑,剩下的電子書路徑,都是重復(fù)的。最后,大膽的調(diào)用刪除命#令,全部刪刪刪刪刪刪,如果刪除出錯(cuò),就調(diào)用cmd命令強(qiáng)制刪除。
Files_Names={
"sort_list":[], #后面,這個(gè)元素列表,會(huì)存儲(chǔ)以下信息 [絕對(duì)路徑,電子書名,后綴名,同一本書的數(shù)量序號(hào),是否重復(fù)]
"ml_name":""
}
def list_name(ml_name):
file_names = os.listdir(ml_name) # 根據(jù)選擇的目錄列出里面的文件及目錄 返回值為列表
if file_names != "": # 只要返回的文件路徑和目錄路徑不為空,防止你犯二,選擇了一個(gè)沒有文件的空目錄
for i in range(0, len(file_names)): # 列表轉(zhuǎn)換為循環(huán)數(shù)。
path = os.path.join(ml_name, file_names[i]) #電子書絕對(duì)路徑 例如:E://電子書/1文件夾/家書.epub
if os.path.isfile(path): # 如果為真,則是文件
# 實(shí)際測試,發(fā)現(xiàn)有一些電子書,沒有后綴名,故加上判斷,沒有.的大概率是沒有后綴名的書籍,此類的就放棄,不整理。之所以判斷.號(hào)是否存在于path[-6:]而不是判斷是否存在整個(gè)絕對(duì)路徑path中,是因?yàn)榘l(fā)現(xiàn)有些文件夾名帶有.號(hào),而此時(shí)存在這個(gè)文件夾里的電子書恰巧是沒有后綴名的,這種情況就會(huì)造成誤判認(rèn)為其有后綴名。所以我才判斷.號(hào)是否存在于path[-6:],而不用整個(gè)路徑判斷
if "." in path[-6:]:
hj=path.split(".")[-1] #分割出電子書后綴名 例如epub
name_nohj=path.split("/")[-1].replace("." + hj, "") #分割,替換去除后綴名,只剩下電子書名 例如:家書
Files_Names["sort_list"].append([path, name_nohj, hj]) #[絕對(duì)路徑,電子書名,后綴名]
else: # 如果不是文件,那應(yīng)該是目錄,就加上/,再調(diào)用自身方法,進(jìn)行遞歸列出下一層的文件,聽說很多人在遞歸這里搞不明白。。。
try:
list_name(path + "/")
except:
print("訪問目錄出錯(cuò),可能不是一個(gè)目錄,或者是奇奇怪怪的文件名")
if __name__ == '__main__':
#format_hj變量用于 指定電子書優(yōu)先留下的格式,在前面的格式元組是要優(yōu)先留下的,因?yàn)閑pub相對(duì)mobi壓縮率高,排版差不多,所以優(yōu)先留下epub的,其次是mobi,再到azw3 .....最后到txt,如果你的電子書,都不屬于下面的格式,那就不管格式了,自動(dòng)留下第一本,其它重復(fù)的書就刪了。
#如果你們要優(yōu)先留下azw3格式的,只需要調(diào)一下 下面的元組順序就行,把("azw3", "AZW3")放到第一。
format_hj = [ ("pdf", "PDF"), ("azw3", "AZW3"), ("mobi", "MOBI"), ("epub", "EPUB"),("doc", "DOC"),("chm", "CHM"), ("html", "HTML"),("txt", "TXT")]
Files_Names["ml_name"]=askdirectory() #選擇電子書所在的目錄并存到變量里,后面重命名完成后,調(diào)用這個(gè)變量,顯示文件夾出來
if Files_Names["ml_name"]!="": #此判斷為了防止你不選擇文件夾,直接點(diǎn)了取消,此時(shí)返回空,就不執(zhí)行遍歷電子書功能。
Files_Names["ml_name"] += "/"
list_name(Files_Names["ml_name"]) # 把選擇的目錄傳入到list_name方法中,進(jìn)行遞歸遍歷照片文件路徑
aa=sorted(Files_Names["sort_list"], key=itemgetter(1,2)) #根據(jù) 書名和后綴名 排序,出來的效果就是 即使不同文件夾里,但名字相同的電子書,都會(huì)排在一起,方便后期用挑選需要的格式,和刪除
# 例如:
# ['E:/電子書合集/20200101/豆瓣高分電子書合集/酒神.azw3', '酒神', 'azw3']
# ['E:/電子書合集/20200101/酒神.epub', '酒神', 'epub']
# ['E:/電子書合集/電子書/小說/酒神.mobi', '酒神', 'mobi']
# 循環(huán)判斷,給電子書,加上數(shù)字序號(hào),當(dāng)遇到重復(fù)的書本就加1,遇到不同的書本,就恢復(fù)序號(hào)為1
for index,i in enumerate(aa):
num=1
if index!=0:
if (i[1] == q_i[1]):
num=q_i[3]+1 #數(shù)字序號(hào)增加
q_i = i
i.append(num)
#根據(jù)上面的數(shù)字序號(hào),循環(huán)判斷,是否重復(fù),重復(fù)的加上”重“字,不重復(fù)即只有一本的,加上”不“字
for index,i in enumerate(aa):
repeat = "不"
if index!=0:
if (i[3] == q_i[3]+1):
q_i.pop()
q_i.append("重")
repeat="重"
q_i = i
i.append(repeat)
#把在電子書列表中,有 不 字的列表 直接 用倒序刪除掉。 不能用順序,這是一個(gè)坑
for i in range(len(aa) - 1, -1, -1):
if "不" in aa[i][4]:
del aa[i]
#下面再通過把同一本書不同格式,合并到同一個(gè)列表中。再塞到一個(gè)大列表里。
bbb=[] #瞎雞亂定的變量名,當(dāng)時(shí)心態(tài)已經(jīng)崩了 小列表
ccc=[] #瞎雞亂定的變量名,當(dāng)時(shí)心態(tài)已經(jīng)崩了 大列表
for index, i in enumerate(aa):
if index!=0:
if (i[3] == q_i[3]+1): #這里通過判斷前一個(gè)和后一個(gè)的數(shù)量序號(hào)是否相等,判斷是否同一本書
bbb.append(i) #是同一本書,就塞到小列表中
else:
ccc.append(bbb) #表示不是同一本書,就把當(dāng)前的塞到大列表,結(jié)束,開始新的一輪加塞
bbb = [] #清空小列表
bbb.append(i) #往小列表加進(jìn)新的一本書
else:
bbb.append(i) #第一本書,就塞到小列表中
q_i = i
ccc.append(bbb) #最后一本 塞進(jìn)大列表
if len(ccc[0])!=0:
for i in ccc: #根據(jù)算法,刪除需要的格式,留下不需要的格式電子書,后面就根據(jù)這些不需要的電子書絕對(duì)路徑,循環(huán)刪除。
for hj in format_hj: #這是要保留的格式
BOOL = False
for index,o in enumerate(i): #這里的i表示同一本書,但不同格式的列表,o表示具體的一本書的路徑信息列表
if hj[0] in o[2] or hj[1] in o[2]:
i.pop(index)
BOOL=True
break
if BOOL:
break
if BOOL==False: #如果多本書名相同的電子書格式都不符合 format_hj指定的格式,就按順序移除第一本,即保留第一本。
i.pop(0)
for i in ccc:
for o in i:
try:
os.remove(o[0])
print("刪除:%s"%o[0])
except:
print("刪除不了,將調(diào)用cmd命令刪除!"+o[0])
o[0]=o[0].replace("/","⁄⁄") #不替換一下反斜杠,命令不生效
cmdd="del /F /S /Q "+o[0]
os.system(cmdd)
else:
print("竟然沒有重名的書籍!恭喜!恭喜!恭喜!恭喜!恭喜!恭喜!")
startfile(Files_Names["ml_name"]) # 完成后自動(dòng)打開 壓縮圖片所在的文件夾
以上就是非凡軟件站小編今日為大家?guī)淼呐縿h除同名電子書(保留指定格式),更多軟件下載盡在非凡軟件站。
文件管理工具 文件管理工具是一款非常實(shí)用的管理軟件,擁有文件操作,如搜索、復(fù)制、移動(dòng)、改名、刪除等諸多功能,本專題整理了多款文件管理工具供您選擇下載。
Chameleon Explorer(變色龍資源管理器)v3.0.0.510 很多用戶的電腦中都存放了超多文件夾,不管是管理還是調(diào)用的時(shí)候...詳情>>
xplorer232位/64位中文注冊(cè)版v13.0.1.4292 電腦中有很多資料的用戶們不用再苦惱如何管理它們啦!不管是視頻...詳情>>
BatchTouch(文件夾屬性修改器)v1.3.6 文件夾的屬性怎么修改?最近不少小伙伴都問到這個(gè)問題,所以小編...詳情>>
PermissionsReporter企業(yè)版v4.1.519 PermissionsReporter企業(yè)版作為專業(yè)的NTF...詳情>>
你是否已經(jīng)厭倦了每次乘坐遵義公交都要準(zhǔn)備零錢或公交卡的麻煩?現(xiàn)在,遵義公交已經(jīng)推出了便捷的乘車碼服務(wù)。那么,你是否好奇如何在遵義公交app上輕松開通乘車碼,享受無現(xiàn)金乘車的便利呢?接下來,小編就來詳細(xì)講解一下,讓你輕松掌握這一實(shí)用技能。遵義公交刷碼乘車方法詳解第一步,進(jìn)入手機(jī)上的遵義公交軟件,點(diǎn)擊下面的乘車碼選項(xiàng)。第二步,進(jìn)入乘車碼界面后,點(diǎn)擊下面的申請(qǐng)開通選項(xiàng)。第三步,進(jìn)入界面后,點(diǎn)擊下面的確認(rèn)
qq是一款十分好用的社交軟件,用戶們可以隨心所欲的進(jìn)行各種功能操作,密碼丟失時(shí)還能夠利用安全中心好友輔助驗(yàn)證登錄,本期小編給大家?guī)砹嗽敿?xì)的操作攻略,有想知道的朋友千萬不要錯(cuò)過!qq安全中心好友輔助驗(yàn)證步驟一覽1、打開QQ安全中心官網(wǎng)頁面后,在頁面找到帳號(hào)解凍點(diǎn)擊進(jìn)入;2、翻轉(zhuǎn)至下一個(gè)新的頁面之后,在頁面輸入好友QQ帳號(hào),點(diǎn)擊下一步即可幫好友輔助驗(yàn)證;3、進(jìn)入到qq主頁面,右上方位置找到頭像圖標(biāo)并
追讀小說是一款熱門小說閱讀應(yīng)用。為了讓讀者享受更個(gè)性化的閱讀體驗(yàn),追讀小說提供了自定義字體功能。那么,在使用追讀小說APP時(shí),如何修改閱讀字體呢?接下來,還不知道的朋友就來和小編一起跟隨步驟,探索一下如何輕松調(diào)整至心儀的字體樣式吧!追讀小說設(shè)置字體方法詳解1. 打開APP之后,點(diǎn)擊某本書,輕觸界面中部,在彈出的菜單欄中,找到設(shè)置選項(xiàng),點(diǎn)擊進(jìn)去。2. 在彈出的菜單欄中,找到系統(tǒng)默認(rèn)選項(xiàng),點(diǎn)擊進(jìn)去。3
虎牙直播是熱門游戲直播平臺(tái)。為了提供更優(yōu)質(zhì)的直播體驗(yàn),虎牙推出了直播APP,主播們可以在APP上輕松開播、互動(dòng),并享受多項(xiàng)便捷功能。那么,在使用虎牙直播APP時(shí),如何關(guān)閉麥克風(fēng)呢?接下來,就和小編我一同來探索一下具體的操作步驟吧!虎牙直播設(shè)置麥克風(fēng)教程分享第一步,打開虎牙直播,開通直播功能,進(jìn)入直播入口。第二步,選擇直播類型,點(diǎn)擊開始直播進(jìn)入自己的直播間。(以交友類型直播間為例)。第三步,進(jìn)入直播
你是否知道在江蘇智慧人社平臺(tái)上該如何申請(qǐng)創(chuàng)業(yè)補(bǔ)貼呢?對(duì)于初創(chuàng)者來說,這是一項(xiàng)非常實(shí)用的福利政策。接下來,我們就來一起看看在江蘇智慧人社上申請(qǐng)創(chuàng)業(yè)補(bǔ)貼的具體路徑,你是否也想了解如何申請(qǐng)這份補(bǔ)貼呢?江蘇智慧人社領(lǐng)取創(chuàng)業(yè)補(bǔ)貼方法介紹1、注冊(cè)登錄“江蘇智慧人社”App。2、進(jìn)入“畢業(yè)生求職創(chuàng)業(yè)補(bǔ)貼”模塊進(jìn)行申請(qǐng)。3、注:畢業(yè)生網(wǎng)上申請(qǐng)補(bǔ)貼時(shí),需提供江蘇省社會(huì)保障卡信息。如果您覺得這篇教程對(duì)您有啟發(fā)或幫助,
芒果tv讓所有的用戶都能夠自由額選擇不同的登錄方式都是很好用的,在使用過程中還能夠隨時(shí)隨地進(jìn)行掃二維碼登錄,本期小編給大家?guī)砹嗽敿?xì)的操作攻略,有想知道的朋友千萬不要錯(cuò)過!芒果tv掃二維碼登錄方法介紹1、打開芒果TV電腦版二維碼登錄,以及打開芒果TV手機(jī)版,點(diǎn)擊首頁左上角的掃一掃圖標(biāo)。 2、掃描網(wǎng)頁版或電腦版的登錄二維碼。 3、點(diǎn)擊確認(rèn)登錄,完成授權(quán)即可。 看完本篇資訊教程,想必大家都清楚了吧,非
本站所有資源(含游戲)均是軟件作者、開發(fā)商投稿,任何涉及商業(yè)盈利目的均不得使用,否則產(chǎn)生的一切后果將由您自己承擔(dān)!本站將不對(duì)任何資源負(fù)法律責(zé)任,所有資源請(qǐng)?jiān)谙螺d后24小時(shí)內(nèi)刪除。
如侵犯了您的版權(quán)、商標(biāo)等,請(qǐng)立刻聯(lián)系我們并具體說明情況后,本站將盡快處理刪除,聯(lián)系
(版權(quán)說明注意事項(xiàng))。若有關(guān)在線投稿、無法下載等問題,請(qǐng)與本站客服人員聯(lián)系
!
用戶可自行按線路選擇相應(yīng)的下載點(diǎn),可以直接點(diǎn)擊下載/另存為,若直接點(diǎn)擊下載速度太慢,請(qǐng)嘗試使用高速下載器。為確保下載的文件能正常使用,請(qǐng)使用WinRAR最新版本解壓本站軟件。
建議大家謹(jǐn)慎對(duì)待所下載的文件,大家在安裝的時(shí)候務(wù)必留意每一步!關(guān)于360安全衛(wèi)士或QQ電腦管家的有關(guān)提示,請(qǐng)自行注意選擇操作。