文件操作在相对路径中不起作用

艾伦

我正在使用一个非常简单的文件结构来开发python3应用程序,但是我在读取脚本中的文本文件时遇到了问题,这两个文件的结构都比调用它们的脚本低。绝对清楚,文件结构如下:

app/
|- cli-script
|- app_core/
   |- dictionary.txt
   |- lib.py

cli-script调用lib.py,并且lib.py需要dictionary.txt执行我需要做的事情,因此它被打开并读入lib.py

cli-script看起来非常基本

from app_core import lib
def cli_func():
  x = lib.Lib_Class()
  x.lib_func()

lib的问题区域在这里:

class Lib_Class:
  def __init__(self):
    dictionary = open('dictionary.txt')

我遇到的问题是,尽管我具有此文件结构,但lib文件找不到词典文件,返回了FileNotFoundError由于可移植性的原因,我宁愿只使用相对路径,否则,我只需要使解决方案操作系统不可知即可。符号链接是我确定的不得已的选择,但我希望不惜一切代价避免使用它。我有什么选择?

蓝牙

当您运行Python脚本时,涉及路径的调用是相对于您从何处运行的,而不是相对于文件实际所在的位置。

__file__变量存储当前文件的路径(无论它在哪里),因此相对文件将是该文件的兄弟。

在您的结构中,__file__是指路径app/app_core/lib.py,因此要创建app/app_core/dictionary.txt,您需要先调整再下降。

app / app_core / lib.py

import os.path

class Lib_Class:
  def __init__(self):
    path = os.path.join(os.path.dirname(__file__), 'dictionary.txt')
    dictionary = open(path)

或使用 pathlib

path = pathlib.Path(__file__).parent / 'dictionary.txt'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章