V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
jsonzz
V2EX  ›  Python

Python 调用文件路径正确科学的方法是什么?

  •  
  •   jsonzz · 2017-08-23 18:01:59 +08:00 · 2401 次点击
    这是一个创建于 2651 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目结构

    -- data

    * config.ini
    

    -- lib

    * __init__.py
    * utils.py
    * main.py
    

    utils 内封装了读取 ini 的方法,其中路径获取方式为:

    self.path = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))+'/data/config.ini'
    self.cf = ConfigParser.ConfigParser()
    self.cf.read(self.path)
    

    问题描述:

    lib 会被安装 site-packages 中,utils 中 self.path 获取路径错误,以下是获取错误的地址与真实地址

    • /Users/qq/Desktop/test/lib/python2.7/site-packages/hhh-1.3.1-py2.7.egg/data/config.ini
    • /Users/qq/Desktop/test/app/data/config.ini

    问题

    • 请问工程内,python 调用文件路径正确科学的方法是什么?
    7 条回复    2017-08-23 20:48:23 +08:00
    Patrick95
        1
    Patrick95  
       2017-08-23 18:28:42 +08:00
    self.path = os.path.abspath(os.path.join(os.path.dirname(os.path.realpath(__file__)), ".."))+'/data/config.ini'
    self.cf = ConfigParser.ConfigParser()
    self.cf.read(self.path)

    这样试试?
    CoX
        2
    CoX  
       2017-08-23 18:37:29 +08:00 via iPhone
    封装逻辑有问题,配置文件路径作为参数传进去
    jsonzz
        3
    jsonzz  
    OP
       2017-08-23 18:51:08 +08:00
    @Patrick95 感谢回复,问题依旧
    guyskk
        4
    guyskk  
       2017-08-23 19:08:42 +08:00 via Android
    配置文件和代码一起安装到 site-packages 里面
    lxy42
        5
    lxy42  
       2017-08-23 19:10:50 +08:00
    既然 lib 都被安装到 site-packages 中了,__file__ 的路径就变了,不是原来的了
    billgreen1
        6
    billgreen1  
       2017-08-23 20:43:42 +08:00
    同意 @guyskk
    954880786
        7
    954880786  
       2017-08-23 20:48:23 +08:00 via iPhone
    我习惯于把路径放在一个专门的配置文件里
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1011 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:52 · PVG 05:52 · LAX 13:52 · JFK 16:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.