python跨模块动态获取路径读取写入文件报错,以日志为例

python跨模块动态获取路径读取写入文件报错,以日志为例

最近在写自动化项目的时候,为项目添加了一个日志模块发现在调用日志时会出现一些问题如下:
示例目录:

  • 主目录
    • 目录A
    • 目录B
      • 目录D
        +模块B
    • 目录C
      • 日志文档
        +日志.log

编写日志模块时,需要编辑写入日志模块的路径,项目如果要在不同的终端上调试,我们一般会采用以下写法:

import logging
import os
import re

LOG_FORMAT = "%(asctime)s - %(levelname)s - %(message)s"
DATE_FORMAT = "%m/%d/%Y %H:%M:%S %p"

pwd = os.path.abspath('.')
pwd2 = pwd2+'../目录C/日志文档/日志.log'
logging.basicConfig(filename=pwd2,
                    level=logging.DEBUG, format=LOG_FORMAT, datefmt=DATE_FORMAT)

若采用此种写法,在模块A调用日志模块时,一切正常因为pwd的指向目录与日志模块内一致。
但在模块B调用日志模块时,pwd的指向为模块B的路径,此时日志将会找不到目标,报错:No such file or directory

为了解决这个问题,我们可以将日志获取的方式改变为半动态获取,代码如下:

import logging
import os
import re

LOG_FORMAT = "%(asctime)s - %(levelname)s - %(message)s"
DATE_FORMAT = "%m/%d/%Y %H:%M:%S %p"

pwd = os.path.abspath('.')
r = r'D.*自动化测试'
pwd2 = re.findall(r, pwd)[0]
pwd3 = pwd2+'/auto/logs/jdy.log'
logging.basicConfig(filename=pwd3,
                    level=logging.DEBUG, format=LOG_FORMAT, datefmt=DATE_FORMAT)

我的日志模块文件路径如下:D:\platform\开发库\doc\06测试阶段\自动化测试\auto\项目名称\autoofmain\public
日志写入文件目录如下:D:\platform\开发库\doc\06测试阶段\自动化测试\auto\logs\nohup.log
在多人开发时,利用正则表达式获取“D:\platform\开发库\doc\06测试阶段\自动化测试”字符串,拼接字符串时采用绝对路径,这样多人同时在本地的D盘开发,在项目路径不一致调用层次不一致的情况下,都能够指向.log文件,可以解决动态获取文件路径出错的问题。

可能写的不是很清晰,如有疑问可以留言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值