在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Boltons:超過230個的純Python實用工具庫

科技綠洲 ? 來源:Python實用寶典 ? 作者:Python實用寶典 ? 2023-10-17 10:56 ? 次閱讀

經過了幾十年的發展,Python 的輪子生態越來越豐富,例如針對網絡請求有 requests,針對命令行開發有 typer 等等,這些第三方庫給我們的日常開發帶來了極大的便利。

今天給兄弟們推薦另一個第三方庫 -- Boltons,和大多數第三方庫不太一樣,它并不是針對某一功能的工具庫,而是將開發中那些重復性(經常使用)及復雜度較高(不容易編寫)較高的代碼剝離出來,并按照操作對象分門別類整合在一起的工具庫。

Boltons 使用的是 BSD 許可證,到目前為止已經收錄 超過230個 的純 Python實用工具庫,這些工具庫與 Python 標準庫并沒有重合,是補充的關系,包括:

  • cacheutils 工具集:用于管理緩存,提供 LRU 和 LRI 等緩存方式
  • debugutils 工具庫:用于調試實用程序
  • dictutils 工具庫:映射類型(OMD)
  • ecoutils 工具庫:生態系統分析
  • fileutils工具庫:文件系統幫助器,提供原子文件保存等功能
  • formatutils 工具庫:str.format() 工具箱
  • funcutils 工具庫:functools 修正
  • gcutils 工具庫:垃圾收集工具
  • ioutils 工具庫:增強輸入/輸出功能
  • iterutils 工具庫:itertools 改進
  • jsonutils 工具庫:JSON交互
  • listutils 工具庫:list 衍生物
  • mathutils 工具庫:提供數學函數的支持
  • mboxutils 工具庫:Unix郵箱實用程序
  • namedutils 工具庫:提供兩種輕量級容器類型
  • pathutils 工具庫:提供處理文件路徑的函數
  • queueutils 工具庫:優先級隊列,目前提供基于堆及基于排序列表兩種隊列實現
  • setutils 工具庫:IndexedSet 類型
  • socketutils 工具庫:socket 包裝紙
  • statsutils 工具庫:統計基本面
  • strutils 工具庫:文本操作,涉及到方方面面,有非常多的工具函數
  • tableutils 工具庫:2D數據結構
  • tbutils 工具庫:回溯跟蹤和調用堆棧,豐富的Tracebackinfo類實現了棧追蹤
  • timeutils 工具庫:增加 datetime 對象處理能力
  • typeutils 工具庫:類型處理
  • urlutils 工具庫:結構化URL,方便對 URL 進行處理

# 1. 如何安裝

安裝只需要一條命令

pip install boltons

# 2. 實用范例

Boltons 的工具庫函數非常多,不能一一舉例,本文只摘取一些明哥認為經典的工具做為演示

遍歷日期

在 timeutils 工具庫中有一個 daterange 可以對日期進行遍歷,省去自己手動構造日期

>> > from datetime import date
 >> > from boltons.timeutils import daterange
 >> >
 >> > christmas = date(year=2022, month=12, day=25)
 >> > new_year = date(year=2023, month=1,  day=1)
 >> > for day in daterange(christmas, new_year):
...     print(repr(day))
...
datetime.date(2022, 12, 25)
datetime.date(2022, 12, 26)
datetime.date(2022, 12, 27)
datetime.date(2022, 12, 28)
datetime.date(2022, 12, 29)
datetime.date(2022, 12, 30)
datetime.date(2022, 12, 31)

當然,你也可以指定遍歷的間隔

>> > for day in daterange(date(2017, 5, 1), date(2017, 8, 1),
...                      step=(0, 1, 0), inclusive=True):
...     print(repr(day))
...
datetime.date(2017, 5, 1)
datetime.date(2017, 6, 1)
datetime.date(2017, 7, 1)
datetime.date(2017, 8, 1)

其中參數的意義是:

  • step (int):元組 (year, month, day) 。
  • inclusive (bool) :是否包含 stop 的日期

范圍轉具體

在 libvirt 里的 xml 上的 CPU 上通常都是這樣表示的

圖片

如何將這種格式(emulatorpin 里的 cpuset)的范圍,直接轉成具體包含了哪些核呢?

使用 boltons 的 strutils 工具包的一個函數立馬搞定

>> > from boltons.strutils import parse_int_list
 >> >
 >> > parse_int_list('0,7,21-22,48,55,69-70')
[0, 7, 21, 22, 48, 55, 69, 70]

遞歸映射

iterutils 工具包里提供一個 remap 函數,可用于遍歷和轉換嵌套結構。

如下面這個例子,將刪除所有 value = None 的元素

>> > from pprint import pprint
 >> >
 >> > reviews = {'Star Trek': {'TNG': 10, 'DS9': 8.5, 'ENT': None},
...            'Babylon 5': 6, 'Dr. Who': None}
 >> >
 >> >
 >> > from boltons.iterutils import remap
 >> >
 >> > pprint(remap(reviews, lambda p, k, v: v is not None))
{'Babylon 5': 6, 'Star Trek': {'DS9': 8.5, 'TNG': 10}}

與 remap 相似的函數還有一個 research,可用于遞歸匹配查找

假設有如下一個字典

root = {'a': {'b': 1, 'c': (2, 'd', 3)}, 'e': None}

此時我想找出所有 value 為整數的的項,可以這樣子實現

>> > from boltons.iterutils import research
> >>
 >> > res = research(root, query=lambda p, k, v: isinstance(v, int))
 >> > print(sorted(res))
[(('a', 'b'), 1), (('a', 'c', 0), 2), (('a', 'c', 2), 3)]

流式讀取多文件

如果你有多個文件需要連接起來處理,可以使用 ioutils 工具包里的 MultiFileReader

>> > from boltons.ioutils import MultiFileReader, BytesIO
 >> >
 >> > mfr = MultiFileReader(BytesIO(b'ab'), BytesIO(b'cd'), BytesIO(b'e'))
 >> > mfr.read(3).decode('ascii')
'abc'

創建多級目錄

Linux 上可以使用 mkdir -p 命令來創建多級目錄,但若使用 Python 來實現這個功能其實是非常麻煩的,如果不斷的判斷,一級一級往下去創建

而在 boltons 上的 fileutils 工具包提供的 mkdir_p 函數,可以達到 Linux 上 mkdir -p 絲滑體驗

>> > from boltons.fileutils import mkdir_p
 >> >
 >> > mkdir_p("/home/foo/bar/test")

URL結構處理

一個 URL 由下面結構組成

foo://user:pass@example.com:8042/over/there?name=ferret#nose
 _/   _______/ _________/ __/_________/ _________/ __/
  |        |          |        |      |           |        |
scheme  userinfo     host     port   path       query   fragment

當我想從 URL 中解析獲取部分內容時,就要對該字符串進行正則匹配。

若使用 boltons 中的 urlutils 工具庫 中的 URL 類,可以很方便對獲取任何 url 構成

>> > from boltons.urlutils import URL
 >> >
 >> > url = URL('foo://example.com:8042/over/there?name=ferret#nose')
 >> > print(url.host)
example.com
 >> >
 >> > print(url.port)
8042
 >> >
 >> > print(url.path)
/over/there
 >> >
 >> > print(url.query_params)
QueryParamDict([('name', 'ferret')])

# 3. 寫在最后

Boltons 是純Python,如果你不想引入 Boltons 巨大的工具箱時,也不用擔心,每個模塊都是獨立的,沒有依賴關系,可以直接復制到項目中使用。Boltons 旨在為廣泛的基本功能提供最好的支持,是對標準庫的一個補充,并且將高級功能留給其他更加專業的第三方庫。推薦給大家使用!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 緩存
    +關注

    關注

    1

    文章

    242

    瀏覽量

    26762
  • 代碼
    +關注

    關注

    30

    文章

    4829

    瀏覽量

    69071
  • 工具
    +關注

    關注

    4

    文章

    314

    瀏覽量

    27915
  • python
    +關注

    關注

    56

    文章

    4808

    瀏覽量

    85047
收藏 人收藏

    評論

    相關推薦

    matlab的實用工具命令

    matlab的實用工具命令實用工具 Abcdchk  檢測(A、B、C、D)組的一致性 Chop 取n重要的位置 Dexresp 離散取樣響應函數 
    發表于 09-22 15:56

    申請實用工具軟件版主!【申請通過】

    標題:申請實用工具軟件區版主會員ID:jianqian1991年齡:20注冊日期:忘記了!申請日期:2010-04-27申請版塊:實用工具軟件特長及愛好:籃球,電影申請理由:無!每天都到這里下資料!問問題!總不能沒點貢獻!自學階段沒有技術!只想申請個
    發表于 04-27 09:10

    51單片機實用工具

    51單片機實用工具
    發表于 12-20 22:36

    LabVIEW實用工具***寶典課件

    不知道有沒有人上傳過《labview實用工具詳解》和寶典配合真的很贊,不過只有前幾章,我是從圖書館借的書,大家可以買一本
    發表于 01-25 22:40

    Labview實用工具詳解 代碼下載

    本帖最后由 tòrγㄚ 于 2015-7-8 10:10 編輯 Labview實用工具詳解 代碼下載
    發表于 06-30 15:43

    LabVIEW實用工具詳解簡版.pdf

    LabVIEW實用工具詳解簡版[url=https://bbs.elecfans.com/forum.php?mod=attachment&aid=MjcwNTU1fDk1ZTc1NWUyfDE0MzgwNDM5Nzl8MTM3MTg4fDUwMjI1MQ%3D%3D][/url]
    發表于 07-28 08:34

    labview實用工具詳解 配套程序

    labview實用工具詳解 配套程序
    發表于 10-22 01:04

    uartassist串口調試助手_實用工具

    uartassist串口調試助手_實用工具,感興趣的小伙伴們可以瞧一瞧。
    發表于 11-17 11:16 ?41次下載

    串口調試軟件實用工具免費下載

    電子發燒友網站提供《串口調試軟件實用工具免費下載.rar》資料免費下載
    發表于 12-25 10:06 ?7次下載

    多種電子工程師實用工具大全

    本文主要介紹了多種電子工程師實用工具大全.
    發表于 06-27 08:00 ?139次下載
    多種電子工程師<b class='flag-5'>實用工具</b>大全

    電阻色環的識別實用工具應用程序免費下載

    本文檔的主要內容詳細介紹的是電阻色環的識別實用工具應用程序免費下載。
    發表于 11-12 08:00 ?5次下載
    電阻色環的識別<b class='flag-5'>實用工具</b>應用程序免費下載

    windows啟動修復實用工具免費下載

    本文檔的主要內容詳細介紹的是windows啟動修復實用工具免費下載。
    發表于 12-10 08:00 ?1次下載
    windows啟動修復<b class='flag-5'>實用工具</b>免費下載

    LLC計算的實用工具應用程序免費下載

    本文檔的主要內容詳細介紹的是LLC計算的實用工具應用程序免費下載。
    發表于 03-31 08:00 ?91次下載
    LLC計算的<b class='flag-5'>實用工具</b>應用程序免費下載

    頻率電感電容計算的實用工具免費下載

    本文檔的主要內容詳細介紹的是頻率電感電容計算的實用工具免費下載。
    發表于 05-06 16:38 ?47次下載
    頻率電感電容計算的<b class='flag-5'>實用工具</b>免費下載

    如何使用 Python 來創建一些強大的應用和實用工具

    本文將探討如何以 Zynq UltraScale 器件上的 IP 核為目標,使用 Python 來創建一些強大的應用和實用工具。此處提供了一程序包,供您用于讀取設備樹和訪問 IP 核。此外還提供一
    發表于 09-08 10:23 ?712次閱讀
    主站蜘蛛池模板: 爱我免费视频观看在线www | 天天摸夜夜摸成人免费视频 | 欧洲色妇| 三级网站在线播放 | 色成年激情久久综合 | 国产成人综合网在线播放 | 久久99热不卡精品免费观看 | 色秀视频免费高清网站 | 日本亚洲天堂网 | 国产卡一卡2卡三卡免费视频 | 久久夜夜肉肉热热日日 | 中文字幕佐山爱一区二区免费 | 啪啪免费网站视频观看 | 女女综合网 | 国产激烈床戏无遮挡观看 | 99自拍视频 | 免费在线h视频 | 天天靠天天擦天天摸 | 天天干天天色综合网 | 乱码中文字幕人成在线 | 伊人精品成人久久综合欧美 | 色姑娘天天干 | 韩国中文字幕在线观看 | 国产视频h | 欧美αv日韩αv另类综合 | 在线网址你懂的 | 午夜精品aaa国产福利 | 青草视频在线观看国产 | 日韩三级一区 | 伊人网网 | 欧美猛交lxxxxxxxxx| 欧美影院一区二区三区 | 免费任我爽橹视频在线观看 | 久青草久青草高清在线播放 | 夜夜夜夜爽 | 午夜片在线观看 | 一本大道一卡二卡四卡 | 日韩 ed2k| 完整日本特级毛片 | 自拍偷拍综合网 | 天堂影院jav成人天堂免费观看 |