1

我有以下结构

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

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

def foo():
     with open('myFile.csv', newline='') as csvfile:
     ......

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

4

1 回答 1

2

您可以使用__file__which 引用当前模块的文件路径;结合__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:
         ...
于 2017-02-28T16:20:03.337 回答