【问题标题】:Load CSV File from specific package从特定包加载 CSV 文件
【发布时间】:2021-12-21 12:44:23
【问题描述】:

我想从另一个包中加载一个 CSV 文件。

就我而言,我想在 reader.py 中调用 csv.reader 并从数据包中加载/打开 Pers1_fb.csv。

我的目的是将数据包用作资源文件夹,类似于Java

我怎样才能归档这个? 我在 Python 3.9 上

我的文件夹结构是这样的:

- Project_Folder
   |
   |- main
        |- __init__.py
        |- reader.py
    

   |- data
        |- __init__.py
        |- Pers1_fb.csv

【问题讨论】:

标签: python


【解决方案1】:

您可以将data 文件夹的路径确定为相对于内置__file__ 属性(即当前正在执行的脚本/模块.py 文件的路径)的路径。这可以通过pathlib 模块轻松完成:

reader.py中的代码:

from pathlib import Path

data_folder_path = (Path(__file__) / '../../data' ).resolve()
csv_file_path = data_folder_path / 'Pers1_fb.csv'
print(csv_file_path)  # -> 'Project_Folder/data/Pers1_fb.csv'

【讨论】:

  • 谢谢 :) 这就是我搜索的内容
【解决方案2】:

我会说只是获取当前目录,上一级文件,然后从那里照常导航。以os 为例:

base = os.path.dirname(os.getcwd())
data_path = os.path.join(base, 'data')

我相信Pathlib 也可以更优雅地完成这项工作!

【讨论】:

  • 使用当前目录是不可靠的,因为它通常与正在执行的脚本不同,具体取决于它的运行方式。
  • 我假设问题中发布的确切文件结构,但我明白你的意思。
  • 文件结构与我试图提出的观点无关。例如,我的意思是脚本可以通过指定完整路径从某个任意文件夹执行:即通过 python Project_Folder/main/reader.py 而不更改当前目录。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-18
  • 2023-03-11
  • 2013-09-10
  • 2023-03-27
  • 2015-12-06
  • 1970-01-01
相关资源
最近更新 更多