我有以下结构
/
/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.py 引用 myFile.csv 而不依赖于导入 myfunc 的文件?
最佳答案
您可以使用__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:
...
关于python3本地文件的包路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42513588/