日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
用Python如何正確讀取資源文件

[[339149]]

在德城等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、成都網(wǎng)站制作 網(wǎng)站設(shè)計制作按需開發(fā)網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計,全網(wǎng)整合營銷推廣,成都外貿(mào)網(wǎng)站建設(shè)公司,德城網(wǎng)站建設(shè)費用合理。

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

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

運行效果如下圖所示:

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

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

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

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

 
 
 
 
  1. import os 
  2.  
  3. def read_file(): 
  4.     current_folder = os.path.dirname(__file__) 
  5.     resource_path = os.path.join(current_folder, 'test.txt') 
  6.     with open(resource_path) as f: 
  7.         content = f.read() 
  8.     print('文件中的內(nèi)容為:', content) 

運行效果如下圖所示:

但這樣寫稍顯麻煩。

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

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

運行效果如下圖所示:

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

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

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

 
 
 
 
  1. from importlib import resources 
  2. from . import deep_folder 
  3.  
  4.  
  5. def read_file(): 
  6.     with resources.open_text(deep_folder, 'test.txt') as f: 
  7.         content = f.read() 
  8.     print('文件中的內(nèi)容為:', content) 

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

 


新聞名稱:用Python如何正確讀取資源文件
本文地址:http://www.5511xx.com/article/cdocgee.html