【问题标题】:python3 package path of local filepython3本地文件的包路径
【发布时间】:2017-07-19 17:01:47
【问题描述】:

我有以下结构

/
/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?

【问题讨论】:

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


    【解决方案1】:

    您可以使用__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:
             ...
    

    【讨论】:

    • 非常感谢!第一个解决方案非常适合我
    猜你喜欢
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 2013-08-22
    • 2014-04-27
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多