【问题标题】:(Python) Creating packages __init__.py(Python) 创建包 __init__.py
【发布时间】:2012-06-12 22:58:04
【问题描述】:

我正在尝试制作以下层次结构的 python 包:

\standard
    \__init__.py
    \text.txt
    \scan.py

scan.py 中有一个名为 parse() 的函数,它通过以下方式打开 text.txt:

name_list = open('text.txt','r')

但是当我运行时

from standard import *
result = scan.parse()

我得到以下信息:

IOError: [Errno 2] No such file or directory: '/text.txt'

【问题讨论】:

    标签: python packages init


    【解决方案1】:

    Python 有一个有趣的变量__file__,它是包含运行代码的文件的名称。您的代码正在查看当前工作目录。

    用它来打开你的文件:

    open(os.path.join(os.path.dirname(__file__), 'text.txt'), 'r')
    

    特殊变量__file__相关文档:

    http://docs.python.org/reference/datamodel.html

    【讨论】:

    • 如果文本文件与scan.py在同一目录下,为什么我需要指定整个路径名?
    • 默认情况下,python 解释器会在当前工作目录中查找 - 您运行整个程序的位置。 scan.py 是该程序中的一个模块。这在其他语言中很难做到,因为它们缺少这个特殊的 file 变量。从技术上讲,您可以计算相对路径(基于当前路径和代码文件的路径)并使用它来打开文件,但这会更难。
    猜你喜欢
    • 2020-08-16
    • 2013-04-21
    • 2016-09-05
    • 2020-04-15
    • 2016-10-02
    • 2020-05-07
    • 2021-12-28
    • 2013-07-20
    相关资源
    最近更新 更多