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

基于Python正確讀取資源文件

 更新時(shí)間:2020年09月14日 15:37:28   作者:小幾斤  
這篇文章主要介紹了基于Python正確讀取資源文件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

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

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

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

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

可以看到,現(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ì)象,我們可以直接寫(xiě)為from .sql_util import conn。但是資源文件不能使用相對(duì)路徑來(lái)讀取,如下圖所示:

有一個(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)行效果如下圖所示:

但這樣寫(xiě)稍顯麻煩。

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

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

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

如果你讀取的不是文本文件,那么你可以把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ù)。這樣才能正確讀取,如下圖所示:

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

相關(guān)文章

  • python讀取mnist數(shù)據(jù)集方法案例詳解

    python讀取mnist數(shù)據(jù)集方法案例詳解

    這篇文章主要介紹了python讀取mnist數(shù)據(jù)集方法案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • python使用udp實(shí)現(xiàn)聊天器功能

    python使用udp實(shí)現(xiàn)聊天器功能

    這篇文章主要介紹了python使用udp實(shí)現(xiàn)聊天器功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2018-12-12
  • Python Socket實(shí)現(xiàn)簡(jiǎn)單TCP Server/client功能示例

    Python Socket實(shí)現(xiàn)簡(jiǎn)單TCP Server/client功能示例

    這篇文章主要介紹了Python Socket實(shí)現(xiàn)簡(jiǎn)單TCP Server/client功能,結(jié)合實(shí)例形式分析了Python基于socket創(chuàng)建TCP服務(wù)器Server與客戶(hù)端client相關(guān)實(shí)現(xiàn)步驟與操作技巧,需要的朋友可以參考下
    2017-08-08
  • PyCharm第一次安裝及使用教程

    PyCharm第一次安裝及使用教程

    本文通過(guò)圖文并茂的形式給大家介紹PyCharm第一次安裝及使用教程,分步驟通過(guò)實(shí)際案例給大家操作演示,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Python 實(shí)現(xiàn)判斷圖片格式并轉(zhuǎn)換,將轉(zhuǎn)換的圖像存到生成的文件夾中

    Python 實(shí)現(xiàn)判斷圖片格式并轉(zhuǎn)換,將轉(zhuǎn)換的圖像存到生成的文件夾中

    今天小編就為大家分享一篇Python判斷圖片格式并轉(zhuǎn)換,將轉(zhuǎn)換的圖像存到生成的文件夾中,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • Python實(shí)現(xiàn)SVM支持向量機(jī)的示例代碼

    Python實(shí)現(xiàn)SVM支持向量機(jī)的示例代碼

    SVM 的目的是在數(shù)據(jù)集中找到一條最佳分隔超平面,使得在這個(gè)超平面兩側(cè)的數(shù)據(jù)分別屬于不同的類(lèi)別,且該超平面與最近的數(shù)據(jù)點(diǎn)之間的距離最大。本文將通過(guò)Python實(shí)現(xiàn)SVM支持向量機(jī),感興趣的可以了解一下
    2023-02-02
  • Python設(shè)計(jì)模式之代理模式實(shí)例

    Python設(shè)計(jì)模式之代理模式實(shí)例

    這篇文章主要介紹了設(shè)計(jì)模式中的代理模式Python實(shí)例,需要的朋友可以參考下
    2014-04-04
  • Python數(shù)據(jù)類(lèi)型和常用操作

    Python數(shù)據(jù)類(lèi)型和常用操作

    這篇文章主要介紹了Python數(shù)據(jù)類(lèi)型和常用操作,數(shù)值數(shù)據(jù)類(lèi)型用于存儲(chǔ)數(shù)值,數(shù)據(jù)類(lèi)型不可改變,改變會(huì)分配一個(gè)新的對(duì)象,下文更多相關(guān)內(nèi)容介紹需要的小伙伴可以參考一下
    2022-04-04
  • Python的in,is和id函數(shù)代碼實(shí)例

    Python的in,is和id函數(shù)代碼實(shí)例

    這篇文章主要介紹了python的in,is和id函數(shù)代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Python結(jié)合spaCy?進(jìn)行簡(jiǎn)易自然語(yǔ)言處理

    Python結(jié)合spaCy?進(jìn)行簡(jiǎn)易自然語(yǔ)言處理

    這篇文章主要為大家介紹了Python結(jié)合spaCy進(jìn)行簡(jiǎn)易自然語(yǔ)言處理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06

最新評(píng)論