将类导入子文件夹中的另一个文件时处理记录器目录

时间:2018-10-25 17:30:30

标签: python

我有以下课程目录:

project_directory/
....__init__.py
....class_file.py
....logger_folder/
....unittest_folder/
.........class_file_test.py

我在class_file.py中定义了一个类,我想从unittest_folder中的class_file_test.py中对其进行测试。 class_file.py包含一个记录器,定义如下:

import logging

logging.basicConfig(level=logging.INFO,
                    filename='./logger_folder/class_file.log')
logger = logging.getLogger('my_logger')

要从unittest文件夹中测试class_file,我在class_file_test.py中使用以下代码导入了class_file:

import sys
sys.path.append('..')

from class_file import MyClass

运行此代码时,出现以下错误:

FileNotFoundError: [Errno 2] No such file or directory: 'C:\\project_folder\\unittest_folder\\logger_folder\\class_file.log'

因此,很明显,单元测试导入了class_file代码,然后使用了“”。我用来定义记录器相对于其自身路径的文件名。在这样的文件结构中处理目录的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

问题是您的目录设置。当前您正在使用当前工作目录的相对路径。实际上,您应该使用该文件目录的绝对路径或相对路径。

from os.path import join, dirname, abspath
print(join(dirname(abspath(__file__)), "file.log"))