91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python 中怎么讀取資源文件

發布時間:2021-07-23 16:50:13 來源:億速云 閱讀:302 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關 Python 中怎么讀取資源文件,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

當你把一個資源文件和一個.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 中怎么讀取資源文件,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安泽县| 九江市| 资溪县| 高碑店市| 昌乐县| 米易县| 德州市| 乌兰察布市| 北川| 共和县| 和政县| 巨野县| 宣化县| 汉中市| 肥东县| 延长县| 秦皇岛市| 亚东县| 曲周县| 南平市| 保山市| 嘉义县| 克东县| 南阳市| 广河县| 塘沽区| 莫力| 运城市| 金乡县| 广汉市| 叙永县| 庆云县| 镇赉县| 大埔县| 广德县| 奈曼旗| 萨嘎县| 集安市| 渝北区| 象山县| 吴川市|