久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

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

瀏覽:32日期:2022-07-14 17:06:02

問(wèn)題

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

解決方案

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

mypackage/ __init__.py somedata.dat spam.py

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

# spam.pyimport pkgutildata = pkgutil.get_data(__package__, ’somedata.dat’)

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

討論

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

首先,一個(gè)包對(duì)解釋器的當(dāng)前工作目錄幾乎沒(méi)有控制權(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)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 黄色91在线 | 成人免费影院 | 国产欧美精品一区二区 | 天天干天天看天天操 | 亚洲精品久久久久久国产精华液 | 久久精品国产一区二区三 | 亚洲国产精品网站 | 久久99精品一区二区三区三区 | 日韩中文字幕电影 | 国产在线精品一区二区三区 | 亚洲 欧美 另类 综合 偷拍 | 亚洲日本国产 | 特级毛片www | 毛片在线视频 | 日韩午夜在线视频 | 色av综合在线 | 精品在线播放 | 亚洲一区 | 精品国产99| 亚洲乱码国产乱码精品精 | 欧美日韩成人在线播放 | 91亚洲在线 | 亚洲人成在线观看 | 欧美亚洲视频 | 99视频免费| 成人h漫在线观看 | 毛片网在线观看 | 成人在线视频免费观看 | 一区二区三区日韩在线 | 91av导航| 色婷婷国产精品综合在线观看 | 国产精品一区二区在线 | 国产女人和拘做受视频 | 亚洲二区视频 | 狠狠视频 | 中文字幕日韩在线视频 | 中文字幕av第一页 | 色婷婷综合久久久中文字幕 | 99久久视频 | 91精品国产高清一区二区三区 | 国产欧美一区二区三区在线看 |