成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python 怒解 RAR

開發 后端
MacOS 可以直接解壓 zip 文件,但 rar 文件卻需要下載軟件,于是我用了解優,過了段時間提示我需要付費才能用。

[[410504]]

本文轉載自微信公眾號「Python七號」,作者somenzz。轉載本文請聯系Python七號公眾號。

MacOS 可以直接解壓 zip 文件,但 rar 文件卻需要下載軟件,于是我用了解優,過了段時間提示我需要付費才能用。

我按耐不住,這么簡單的需求,你讓我付費,我大 Python 是吃素的嘛,一頓操作,5 分鐘實現怒解 RAR 文件,以下是詳細方法:

1、下載源碼,編譯 lib

從這里下載源碼 https://www.rarlab.com/rar/unrarsrc-6.0.7.tar.gz

下載后,進入 unrar 目錄,執行 make lib 編譯,編譯完成后,會在 unrar 目錄會出現一個 libunrar.so 的動態鏈接庫文件,記錄這個 libunrar.so 路徑。

2、編寫代碼,怒解 RAR

這里需要先設置下環境變量 UNRAR_LIB_PATH,設置成上步我們生成 libunrar.so 的路徑,然后再導入 unrar 的 rarfile 模塊時,UNRAR_LIB_PATH 的值就不是 None 了。

使用 unrar 前,請先 pip install unrar 一下。

  1. import os 
  2. os.environ.setdefault("UNRAR_LIB_PATH","/Users/aaron/Downloads/unsplash/unrar/libunrar.so"
  3.  
  4.  
  5. from unrar import rarfile 
  6. target_path = '/Users/aaron/Downloads/unsplash' 
  7. rf = rarfile.RarFile("/Users/aaron/Downloads/unsplash/python自動化運維.rar", mode='r') # mode的值只能為'r' 
  8. rf_list = rf.namelist() # 得到壓縮包里所有的文件 
  9. print('rar文件內容:'
  10. for file in rf_list: 
  11.     print(file) 
  12.  
  13. rf.extractall(target_path) 
  14. print("解壓完成"

3、讓它更通用

上述代碼雖然能用,但每次使用需要復制路徑和文件名,不方便,這里我們把它做成一個命令行工具,代碼修改如下:

  1. #!/Users/aaron/py38env/bin/python3 
  2. # -*- coding: utf-8 -*- 
  3.  
  4. import os 
  5. os.environ.setdefault("UNRAR_LIB_PATH","/Users/aaron/Downloads/unsplash/unrar/libunrar.so"
  6. import sys 
  7. from somedecorators import timeit 
  8. from unrar import rarfile 
  9.  
  10. @timeit() 
  11. def decompress(rar_file): 
  12.     rf = rarfile.RarFile(rar_file, mode='r') # mode的值只能為'r' 
  13.     rf_list = rf.namelist() # 得到壓縮包里所有的文件 
  14.     for file in rf_list: 
  15.         print(file) 
  16.     rf.extractall() 
  17.  
  18. if __name__ == '__main__'
  19.     decompress(sys.argv[1]) 

文件第一行,指定了編譯器為 #!/Users/aaron/py38env/bin/python3,這樣在命令行執行時就不需要再敲 python 了。

函數上面使用了自己寫的裝飾器 somedecorators.timeit,只是為了統計時間,你可以 pip install somedecorators 來使用。

將上述代碼保存為 unrarfile,然后復制到 /Users/aaron/py38env/bin/ 目錄,不放這個目錄也行,只要放在 $PATH 目錄就可以在任意路徑下調用。先加上用戶可執行權限,再使用:

  1. chmod u+x /Users/aaron/py38env/bin/unrarfile 

然后隨便找個 rar 文件,就可以執行 unrarfile rar文件名 進行解壓了:

  1. (py38env) ➜  tmp unrarfile myCeleryProj.rar  
  2. myCeleryProj/.app.py.un~ 
  3. myCeleryProj/app.py 
  4. myCeleryProj/settings.py 
  5. myCeleryProj/tasks.py 
  6. myCeleryProj/__init__.py 
  7. myCeleryProj/__pycache__/celery.cpython-36.pyc 
  8. myCeleryProj/__pycache__/celeryconfig.cpython-36.pyc 
  9. myCeleryProj/__pycache__/tasks.cpython-36.pyc 
  10. myCeleryProj/__pycache__/__init__.cpython-36.pyc 
  11. myCeleryProj/__pycache__ 
  12. myCeleryProj 
  13. decompress cost 0.0070 seconds 
  14. (py38env) ➜  tmp  

是不是很方便?

最后的話

 

很多問題,只要會重復遇到,就要想辦法徹底解決,否則,在某個未知時刻,這個問題還會出來煩人,Python 就是解決這類重復問題的利器。

 

責任編輯:武曉燕 來源: Python七號
相關推薦

2021-11-30 06:32:19

Redis宕機集群

2022-12-13 07:55:00

Python地理編碼

2018-04-08 15:32:47

Hadoop大數據Gartner

2020-07-03 07:46:22

CPUOS內存

2009-02-27 14:48:09

2013-08-12 12:36:10

2010-02-23 09:22:36

Python項目

2010-01-22 10:56:01

fedorarar

2021-09-23 09:49:02

IT工具技術

2012-12-18 11:55:38

2020-10-30 08:58:33

Python列表開發

2014-10-17 10:52:11

2015-01-16 17:09:42

Windows8.1漏系統漏洞微軟

2013-11-04 09:47:43

微軟Windows

2023-04-20 17:51:41

馬斯克微軟

2017-01-12 08:31:40

2014-10-15 10:35:57

2023-08-24 22:16:15

2018-10-09 08:30:55

UbuntuLinuxRAR文件

2023-01-09 14:50:19

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久草视频在线播放 | 色精品视频 | 五月精品视频 | 国产精品久久久久久吹潮 | 久久夜视频| 精品九九久久 | 羞羞网站在线观看 | 午夜精品在线观看 | 黄a网站| 日韩在线观看一区 | 国产色在线 | 久久久91精品国产一区二区三区 | 秋霞电影院午夜伦 | 亚洲精品久久久久久下一站 | 在线免费观看黄色 | 国产综合在线视频 | 亚洲精品欧美 | 成人影音| 精精国产xxxx视频在线播放 | 酒色成人网 | 中文在线视频观看 | 一区二区精品视频 | 精品久久久久久久久久久久 | 成人免费大片黄在线播放 | 欧美狠狠操 | 亚洲综合首页 | 日本精品一区二区三区视频 | 中文字幕一区二区三区精彩视频 | 久久国色 | 午夜久久久 | 色视频在线播放 | 欧美国产激情二区三区 | 成人午夜激情 | 欧美日韩国产在线观看 | 国产91视频一区二区 | 自拍偷拍亚洲欧美 | 一呦二呦三呦国产精品 | 九九亚洲 | 国产高清精品一区二区三区 | 成人午夜影院 | 九九热在线视频 |