python3本地文件的包路径

时间:2017-02-28 16:07:33

标签: python python-3.x python-import python-packaging

我有以下结构

defer

现在myfunc.py有一个函数读取myFile.csv

/
/myPackage/
          __init__.py
          myFile.csv
          myFunc.py
/test/
     __init__.py
     func.py

如果我在func.py中导入foo,则路径“myFile.csv”不再正确。 如何从myFunc.py中引用myFile.csv,而不依赖于导入myfunc的文件?

1 个答案:

答案 0 :(得分:2)

您可以使用__file__引用当前模块的文件路径;将__file__os.path.dirname相结合,您可以获得包含模块的目录。

import os

def foo():
     directory = os.path.dirname(__file__)
     csv_path = os.path.join(directory, 'myFile.csv')
     with open(csv_path, newline='') as csvfile:
         ...

如果您使用Python 3.4+,则可以改为使用pathlib

import pathlib

def foo():
     csv_path = pathlib.Path(__file__).parent / 'myFile.csv'
     with csv_path.open(newline='') as csvfile:
         ...