python 大量亂序檔案如何合併成有序的

本文以爬取一部小說為例,因使用的是多執行緒爬取,所以每個小說章節都是一個txt檔案,而這些檔案都是亂序的,要閱讀的話我們也不可能每閱讀一章小說就去翻另一個txt檔案,這時就需要合併了.

----------------------------------------

爬取時間2022/8/16

程式碼如下:

   

程式碼1-25行

   

程式碼28-49行

   

程式碼50-75行

執行結果:

   

pycharm中的結果

   

檔案管理器中的結果

從結果中可以看到,程式從執行到結束,一共花了3秒鐘,

三秒內做完了從網站獲取url連結,再通過120個url下載了120個txt檔案,合併成一個大的txt檔案後,再刪除之前的120個小txt檔案.

----------------------------------------------

程式碼10-25行>>>

從主頁面發起請求,結合bs4和正則獲取了小說每個章節的url連結和名字,並將順序正常的名字寫入叫1000.txt的檔案. 第22行用unicodedatach處理了文字中的非正常空格(類似 )

程式碼第28-39行>>>

以每個章節的url為函式引數,獲取了小說內容,並寫入txt檔案,

用章節名 (例如: 第四十九回 琉璃世界白雪紅梅 脂粉香娃割腥啖) 作為xxt檔案的名字. 因為原本的章節名含有空格以及非正常空格,不利於後續排序處理,就採用正則提取了 "第"和"回"中間的文字作為txt檔名.

   

不用正則處理xtxt檔名就是這個樣子

程式碼第69-71行>>>

建立了執行緒池下載txt檔案

程式碼第41-55行>>>

開啟名為1000.txt檔案,提取裡面的正常順序的章節名,以此作為已下載的120個txt檔案的合併順序.

程式碼第57-61行>>>

將之前下載的120個小txt檔案刪除,保留合併後的大的txt檔案,接下來就可以愉快地閱讀小說了

   

手機中顯示的效果

注: 將ts檔案合併成MP4檔案也是通用的,但需要注意的是使用os模組單次合併ts檔案數量在650個左右,不到700個.

至於用os模組單次合併txt檔案的數量限制是多少,暫時未測試.

----------------------------------------------

最後:原始碼以及小說txt檔案,封面原圖連結阿里雲盤分享