欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python 讀取位于包中的數(shù)據(jù)文件

 更新時(shí)間:2020年08月07日 11:09:28   作者:David Beazley  
這篇文章主要介紹了Python 如何讀取位于包中的數(shù)據(jù)文件,幫助大家更好的理解和學(xué)習(xí)Python,感興趣的朋友可以了解下

問題

你的包中包含代碼需要去讀取的數(shù)據(jù)文件。你需要盡可能地用最便捷的方式來做這件事。

解決方案

假設(shè)你的包中的文件組織成如下:

mypackage/
    __init__.py
    somedata.dat
    spam.py

現(xiàn)在假設(shè)spam.py文件需要讀取somedata.dat文件中的內(nèi)容。你可以用以下代碼來完成:

# spam.py
import pkgutil
data = pkgutil.get_data(__package__, 'somedata.dat')

由此產(chǎn)生的變量是包含該文件的原始內(nèi)容的字節(jié)字符串。

討論

要讀取數(shù)據(jù)文件,你可能會(huì)傾向于編寫使用內(nèi)置的I/ O功能的代碼,如open()。但是這種方法也有一些問題。

首先,一個(gè)包對(duì)解釋器的當(dāng)前工作目錄幾乎沒有控制權(quán)。因此,編程時(shí)任何I/O操作都必須使用絕對(duì)文件名。由于每個(gè)模塊包含有完整路徑的__file__變量,這弄清楚它的路徑不是不可能,但它很凌亂。

第二,包通常安裝作為.zip或.egg文件,這些文件并不像在文件系統(tǒng)上的一個(gè)普通目錄里那樣被保存。因此,你試圖用open()對(duì)一個(gè)包含數(shù)據(jù)文件的歸檔文件進(jìn)行操作,它根本不會(huì)工作。

pkgutil.get_data()函數(shù)是一個(gè)讀取數(shù)據(jù)文件的高級(jí)工具,不用管包是如何安裝以及安裝在哪。它只是工作并將文件內(nèi)容以字節(jié)字符串返回給你

get_data()的第一個(gè)參數(shù)是包含包名的字符串。你可以直接使用包名,也可以使用特殊的變量,比如__package__。第二個(gè)參數(shù)是包內(nèi)文件的相對(duì)名稱。如果有必要,可以使用標(biāo)準(zhǔn)的Unix命名規(guī)范到不同的目錄,只要最后的目錄仍然位于包中。

以上就是Python 讀取位于包中的數(shù)據(jù)文件的詳細(xì)內(nèi)容,更多關(guān)于Python 讀取數(shù)據(jù)文件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python轉(zhuǎn)換pkl模型文件為txt文件問題

    python轉(zhuǎn)換pkl模型文件為txt文件問題

    這篇文章主要介紹了python轉(zhuǎn)換pkl模型文件為txt文件問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 詳解Python的Django框架中manage命令的使用與擴(kuò)展

    詳解Python的Django框架中manage命令的使用與擴(kuò)展

    這篇文章主要介紹了Python的Django框架中manage命令的使用與擴(kuò)展,manage.py使得用戶借助manage命令在命令行中能實(shí)現(xiàn)諸多簡(jiǎn)便的操作,需要的朋友可以參考下
    2016-04-04
  • Python中zip()函數(shù)的使用方法詳解

    Python中zip()函數(shù)的使用方法詳解

    在Python中,zip()函數(shù)是一個(gè)非常實(shí)用且強(qiáng)大的內(nèi)置函數(shù),它主要用于將多個(gè)迭代器(如列表、元組、字符串等)中的元素“打包”成一個(gè)個(gè)元組,并返回一個(gè)迭代器,下面,我將詳細(xì)探討zip()函數(shù)的使用方法,需要的朋友可以參考下
    2024-09-09
  • python中的錯(cuò)誤處理及異常斷言詳解

    python中的錯(cuò)誤處理及異常斷言詳解

    這篇文章主要為大家介紹了python中的錯(cuò)誤處理及異常斷言示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • 使用VLC實(shí)現(xiàn)自動(dòng)播放視頻的操作方法

    使用VLC實(shí)現(xiàn)自動(dòng)播放視頻的操作方法

    VLC是一款開源的多媒體播放器,它支持大量的視頻和音頻格式,并且具有強(qiáng)大的腳本和編程接口,這篇文章主要介紹了使用VLC實(shí)現(xiàn)自動(dòng)播放視頻,需要的朋友可以參考下
    2024-03-03
  • Python騷操作完美實(shí)現(xiàn)短視頻偽原創(chuàng)

    Python騷操作完美實(shí)現(xiàn)短視頻偽原創(chuàng)

    剪輯的視頻上傳到某平臺(tái)碰到降權(quán)怎么辦?視頻平臺(tái)都有一套自己的鑒別算法,專門用于處理視頻的二次剪輯,本篇我們來用python做一些特殊處理
    2022-02-02
  • Python實(shí)現(xiàn)讀取郵箱中的郵件功能示例【含文本及附件】

    Python實(shí)現(xiàn)讀取郵箱中的郵件功能示例【含文本及附件】

    這篇文章主要介紹了Python實(shí)現(xiàn)讀取郵箱中的郵件功能,可讀取郵件文本及附件的功能,涉及Python針對(duì)郵件的獲取、分析、保存等相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08
  • python中實(shí)現(xiàn)棧的三種方法

    python中實(shí)現(xiàn)棧的三種方法

    這篇文章主要介紹了python中實(shí)現(xiàn)棧的三種方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • Python遠(yuǎn)程開發(fā)環(huán)境部署與調(diào)試過程圖解

    Python遠(yuǎn)程開發(fā)環(huán)境部署與調(diào)試過程圖解

    這篇文章主要介紹了Python遠(yuǎn)程開發(fā)環(huán)境部署與調(diào)試過程圖解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 淺談Django的緩存機(jī)制

    淺談Django的緩存機(jī)制

    這篇文章主要介紹了淺談Django的緩存機(jī)制,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08

最新評(píng)論