python - PYTHON:带有本地文件夹文件调用的导入模块=错误
问题描述
早上好,
像这样的结构:
-root folder
---folder_A
-----conf_file.cnf
-----module.py
---folder_B
-----script.py
模块.py:
class ModuleFoo:
FILE_CONST = "conf_file.cnf"
...
执行这个文件,一切OK。从 conf 文件加载数据,一切运行顺利。
脚本.py:
...
from folder_A.ModuleFoo import *
...
class MyScript:
...
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.ObjModuleFoo = ModuleFoo(...)
...
突然出现一个错误:
FileNotFoundError: [Errno 2] No such file or directory: 'conf_file.cnf'
我知道它与路径有关,但我不知道如何正确安装它以便能够在我想要的每个脚本上导入 ModuleFoo,而不必在每个导入它的本地项目上移动配置文件。
你能帮我吗?我已经尝试过 absolutepath、cwd、sys 等...但不知道如何解决它,当导入模块时,CWD 更改,事件真实绝对路径也到当前script.py正在运行的那个.
谢谢并恭祝安康。
解决方案
好的。我已经这样解决了:
在module.py上:
...
import os
...
class ModuleFoo:
FILE_CONST = f"{os.path.dirname(__file__)}/conf_file.cnf"
就是这样。它成功了。你觉得这个灵魂有什么问题吗?我知道很多人说在这样的事情上引用“文件”不是一个好主意......
推荐阅读
- vb.net - 使用 IEnumerable 返回字符串的所有可能性
- java - turnRight 方法在组合锁程序中不起作用 - java
- c# - 从控制台应用程序创建/更新数据库模式
- javascript - jQuery.html() 函数不保留动态 DOM 中的选择和输入中的值
- python - 正则表达式 python - 仅当换行符后跟数字或特殊字符和空格时才匹配换行符
- swift - Swift IBDesignable UIButton 类 - 在 didRotate 上更改宽度
- python - 使用 SetParent win32gui 函数将 ffplay 窗口嵌入到 tkinter 框架中
- javascript - 点击事件在我的地图功能中不起作用
- haskell - 无特定原因的稳定名称更改
- javascript - 导航到新页面时,如何使我的拨动开关保持在当前位置?