亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

基于Python正確讀取資源文件

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

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

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

運行效果如下圖所示:

基于Python正確讀取資源文件

但請注意,這里我是直接運行的read.py這個文件。如果資源文件是存放在一個包(package)里面,然后我們在外面調用這個包里面的.py文件會怎么樣呢?我們試一試:

基于Python正確讀取資源文件

可以看到,現在Python 已經找不到這個文件了。這是因為,我們的入口程序在 ~/get_title文件夾中,而test.txt文件在~/get_title/util文件夾中。因為我們運行的是main.py,所以 Python 會在~/get_title文件夾里面尋找test.txt,自然就找不到了。

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

基于Python正確讀取資源文件

有一個笨辦法,就是獲取當前正在運行的這一行代碼所在的文件夾,然后拼出資源文件的完整路徑。修改 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(’文件中的內容為:’, content)

運行效果如下圖所示:

基于Python正確讀取資源文件

但這樣寫稍顯麻煩。

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

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

運行效果如下圖所示:

基于Python正確讀取資源文件

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

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

例如我們的包為util,里面有一個文件夾叫做deep_folder,資源文件test.txt放在deep_folder中,此時,我們如果要讀取這個資源文件,就必須把在deep_folder文件夾中創建一個init.py,把它也變成一個包。然后修改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(’文件中的內容為:’, content)

把deep_folder作為一個 module 導入,然后把這個 module 作為resources.open_text的第一個參數。這樣才能正確讀取,如下圖所示:

基于Python正確讀取資源文件

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 欧美在线视频精品 | 美女久久久久久 | 国产日产欧美一区二区三区 | 欧美5g影院天天5g天天看 | 久久亚洲综合色 | 亚洲 欧美 激情 另类 校园 | 欧美黄色一级在线 | 精品视频中文字幕 | 国产在线视频www片 国产在线视频www色 | 一区二区三区高清视频在线观看 | 亚洲欧美综合日韩字幕v在线 | 欧美性一级交视频 | 中国一级毛片aaa片 中国一级毛片在线观看 | 久久久噜噜噜久久中文字幕色伊伊 | 九九精品视频在线播放 | 日本黄色免费网址 | 久久免费观看国产精品 | 草草国产成人免费视频 | 在线人成精品免费视频 | 国产特级全黄一级毛片不卡 | 九一国产精品视频 | 黄色网址视频 | 国产精品合集一区二区三区 | xxx国产精品视频 | 久久久国产免费影院 | 国产中文久久精品 | 一级黄色片在线看 | 亚洲国产视频在线观看 | 在线观看国产一区二区三区99 | 欧美一级毛片兔费播放 | 老司机成人免费精品视频 | 欧美精品播放 | 色婷婷欧美| 亚洲成a人片在线网站 | 精品国产福利第一区二区三区 | 成人交性视频免费看 | 成人在线一区二区三区 | 精品视频专区 | 亚洲 中文 欧美 日韩 在线 | 黄色三级免费网站 | sese欧美 |