我有以下结构
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的文件?
答案 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:
...