成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用 Python 如何正確讀取資源文件

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

[[339149]]

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

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

運行效果如下圖所示:

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

可以看到,現在Python 已經找不到這個文件了。這是因為,我們的入口程序在 ~/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('文件中的內容為:', 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,從而讀取二進制文件。

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

例如我們的包為util,里面有一個文件夾叫做deep_folder,資源文件test.txt放在deep_folder中,此時,我們如果要讀取這個資源文件,就必須把在deep_folder文件夾中創建一個__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('文件中的內容為:', content) 

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

 

責任編輯:趙寧寧 來源: 未聞Code
相關推薦

2009-08-21 16:13:27

C#讀取資源文件

2010-02-24 09:47:05

Python 源文件

2013-07-30 12:30:57

Windows PhoWindows Pho

2012-02-03 09:55:06

Delphi

2013-06-17 17:02:15

Windows PhoWP開發資源文件

2011-06-20 14:18:27

Qt 資源 文件

2011-08-15 14:47:28

Cocoa嵌入資源文件

2009-06-02 14:21:04

eclipse資源文件eclipse中文

2009-08-28 16:08:28

C#利用資源文件

2009-12-28 11:23:38

WPF資源文件

2010-01-04 16:23:42

Silverlight

2009-10-28 11:27:34

VB.NET資源文件

2009-06-19 16:12:22

Java語言properties

2009-08-12 16:44:13

.NET文件類型

2009-06-05 09:40:59

2010-01-15 18:50:25

VB.NET資源文件

2012-04-17 10:28:00

Cocos2dwophone

2010-02-02 18:02:20

Python源文件

2010-02-03 15:17:58

Python 源文件

2013-04-03 12:57:01

Android開發讀寫assets目錄下
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品久久久久久久久久久久 | 超碰激情 | 99久久精品免费看国产高清 | 天天干天天色 | 日本久久网 | 精品一区av | www久久久 | 激情五月激情综合网 | 91成人免费看片 | 国产成人免费在线观看 | 亚洲视频区 | 欧美视频二区 | 麻豆国产一区二区三区四区 | 精品视频一区二区三区 | 亚洲欧洲日本国产 | 国产成人精品久久二区二区 | 欧美久久一区二区 | 久久草视频 | 精品国产一级片 | 久久精品无码一区二区三区 | 在线精品亚洲欧美日韩国产 | 色欧美片视频在线观看 | 久久成人免费视频 | 亚洲成av人片在线观看 | 中文字幕一区二区三区精彩视频 | 日本三级电影免费 | 成人3d动漫一区二区三区91 | 丝袜美腿一区二区三区 | 国产精品成人久久久久a级 久久蜜桃av一区二区天堂 | 日韩视频一区 | 精品一区国产 | 欧美一级久久 | 国产精品久久久久久久久久不蜜臀 | 亚洲视频www | 国产精品久久久久久久免费大片 | 欧美日韩精品在线免费观看 | 91九色porny首页最多播放 | 国产美女h视频 | 在线视频第一页 | 精品一二区| 欧美精品久久久 |