成人视屏在线观看-国产99精品-国产精品1区2区-欧美一级在线观看-国产一区二区日韩-色九九九

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

基于Python正確讀取資源文件

瀏覽:103日期:2022-07-11 10:54:32

我們知道,當(dāng)你把一個(gè)資源文件和一個(gè).py文件放在一起的時(shí)候,你可以直接在這個(gè).py文件中,使用文件名讀取它。例如:

with open(’test.txt’) as f: content = f.read() print(’文件中的內(nèi)容為:’, content)

運(yùn)行效果如下圖所示:

基于Python正確讀取資源文件

但請(qǐng)注意,這里我是直接運(yùn)行的read.py這個(gè)文件。如果資源文件是存放在一個(gè)包(package)里面,然后我們?cè)谕饷嬲{(diào)用這個(gè)包里面的.py文件會(huì)怎么樣呢?我們?cè)囈辉嚕?/p>

基于Python正確讀取資源文件

可以看到,現(xiàn)在Python 已經(jīng)找不到這個(gè)文件了。這是因?yàn)椋覀兊娜肟诔绦蛟?~/get_title文件夾中,而test.txt文件在~/get_title/util文件夾中。因?yàn)槲覀冞\(yùn)行的是main.py,所以 Python 會(huì)在~/get_title文件夾里面尋找test.txt,自然就找不到了。

如果是引用包里面的其他模塊,可以使用相對(duì)路徑。例如引用同一個(gè)包里面名叫sql_util.py里面的conn對(duì)象,我們可以直接寫為from .sql_util import conn。但是資源文件不能使用相對(duì)路徑來讀取,如下圖所示:

基于Python正確讀取資源文件

有一個(gè)笨辦法,就是獲取當(dāng)前正在運(yùn)行的這一行代碼所在的文件夾,然后拼出資源文件的完整路徑。修改 read.py 文件:

import os def read_file(): current_folder = os.path.dirname(__file__) resource_path = os.path.join(current_folder, ’test.txt’) with open(resource_path) as f: content = f.read() print(’文件中的內(nèi)容為:’, content)

運(yùn)行效果如下圖所示:

基于Python正確讀取資源文件

但這樣寫稍顯麻煩。

如果你的 Python 版本不低于3.7,那么你可以使用importlib.resources來快速讀取資源文件:

from importlib import resources with resources.open_text(’包名’, ’資源路徑’) as f: content = f.read()

運(yùn)行效果如下圖所示:

基于Python正確讀取資源文件

如果你讀取的不是文本文件,那么你可以把resources.open_text改成resources.open_binary,從而讀取二進(jìn)制文件。

但需要注意的是,資源文件必須放在包的根目錄。這樣才能正確讀取。如果資源文件在包內(nèi)部的子目錄中,importlib.resources是不能直接讀取的。

例如我們的包為util,里面有一個(gè)文件夾叫做deep_folder,資源文件test.txt放在deep_folder中,此時(shí),我們?nèi)绻x取這個(gè)資源文件,就必須把在deep_folder文件夾中創(chuàng)建一個(gè)init.py,把它也變成一個(gè)包。然后修改read.py的代碼:

from importlib import resources from . import deep_folder def read_file(): with resources.open_text(deep_folder, ’test.txt’) as f: content = f.read() print(’文件中的內(nèi)容為:’, content)

把deep_folder作為一個(gè) module 導(dǎo)入,然后把這個(gè) module 作為resources.open_text的第一個(gè)參數(shù)。這樣才能正確讀取,如下圖所示:

基于Python正確讀取資源文件

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 一级片免费观看 | 欧美曰韩一区二区三区 | 日本成人在线视频网站 | 国产在线观看免费 | 日产一区二区三区四区 | 亚洲三区视频 | 欧美日韩中文一区二区三区 | 久久精品国产大片免费观看 | 欧美日韩亚洲高清不卡一区二区三区 | 亚洲精品午夜一区二区在线观看 | 亚洲欧美日韩成人一区在线 | 亚洲成在人线免费视频 | 国产在线观看成人 | 久久久久亚洲香蕉网 | 日本三区视频 | 中文乱码字幕午夜无线观看 | hd欧美xxx欧美极品hd | 欧美激情视频一区二区免费 | 91成人国产福利 | 黄色片日本人 | 目韩一区二区三区系列片丶 | 欧美日中文字幕 | 成人在线网址 | 国产精品单位女同事在线 | 亚洲国产精品欧美日韩一区二区 | 女人野外小树林一级毛片 | bt天堂国产亚洲欧美在线 | 中文一区 | 精品成人毛片一区二区视 | 日日操干 | 萌白酱福利视频在线网站 | 国产黄色一级毛片 | 国产成人精品高清在线观看99 | 欧美日韩永久久一区二区三区 | 日韩在线视频一区二区三区 | 国产欧美综合在线一区二区三区 | 一本色道久久综合网 | 精品国产区一区二区三区在线观看 | 久久精品呦女 | 欧美成人26uuu欧美毛片 | 91欧洲在线视精品在亚洲 |