Python 3.9如何从指定包加载CSV文件 实现类Java资源文件夹用法
实现方案
核心实现思路
使用Python 3.9标准库自带的importlib.resources模块完成资源读取,完全对齐Java资源文件夹的加载逻辑:通过包名定位资源文件,不依赖当前脚本的执行路径,无需手动拼接相对/绝对路径,避免运行路径变化导致的文件找不到问题。
前置要求
- 项目根目录
Project_Folder需加入Python的模块搜索路径:通常直接在Project_Folder目录下执行脚本即可满足,特殊场景可手动将Project_Folder的绝对路径加入sys.path - 保留
data目录下的__init__.py文件,确保Python将data识别为合法包
reader.py 代码示例
import csv from importlib.resources import open_text # 导入data包作为资源定位的锚点 import data def load_pers1_fb(): # 直接通过data包定位CSV资源 with open_text(data, "Pers1_fb.csv", encoding="utf-8") as f: csv_reader = csv.reader(f) # 此处替换为你自己的业务处理逻辑,示例为遍历所有行 for row in csv_reader: print(row) if __name__ == "__main__": load_pers1_fb()
高版本兼容写法
如果后续升级到Python 3.11及以上版本,可以使用更通用的files接口,同时支持普通目录和压缩包内的资源读取:
import csv from importlib.resources import files import data def load_pers1_fb(): with (files(data) / "Pers1_fb.csv").open("r", encoding="utf-8") as f: csv_reader = csv.reader(f) for row in csv_reader: print(row)
内容的提问来源于stack exchange,提问作者cdr_chakotay
相关产品推荐
相关产品推荐

