python3本地文件包路径
python3 package path of local file
我有以下结构
/
/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?
你可以使用__file__
which refers the file path of the current module; combining __file__
with 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:
...
我有以下结构
/
/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?
你可以使用__file__
which refers the file path of the current module; combining __file__
with 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:
...