python中遇到的问题_使用python遇到的问题汇总

问题:TypeError: 'module' object is not callable

import sys

sys.path.append('./public')

from public import baseRequest

self.myRequest = baseRequest()

TypeError: 'module' object is not callable

解决办法:

修改为:

self.myRequest = baseRequest.Mytest()

原因:

Python导入模块的方法有两种:import module 和 from module import xxx

使用后者导入文件,在创建类对象时,需要使用 “模块名.类名”的方式

问题:字符串(string)转为字典(dict)

1、用 eval()或exec() 函数

a = "{'a': 'hi', 'b': 'there'}"

b = eval(a)

b

{'a': 'hi', 'b': 'there'}

exec ("c=" + a)

c

{'a': 'hi', 'b': 'there'}

2、使用json模块

import json

dict= json.loads(str)

问题:日志重复输入到控制台和文件的解决办法

1、尝试将日志模块的初始化代码写在myunittest文件的setup方法里

结果:部分项目可用

2、尝试在teardown方法里移除logger的handler

self.logger.removehandler(sh)

结果:不生效

3、在封装的日志模块的初始化代码里加入判断,如果存在handler则不添加。

结果:生效,当前项目达到预期效果

日志模块最终代码:

import logging

class Logger(object):

def init(self, path,clevel = logging.INFO,Flevel = logging.INFO):

self.logger = logging.getLogger(path)

self.logger.setLevel(logging.DEBUG)

fmt = logging.Formatter('[%(asctime)s][%(levelname)s] %(message)s','%Y-%m-%H:%M:%S')

if not self.logger.handlers:

#设置CMD日志

sh = logging.StreamHandler()

sh.setFormatter(fmt)

sh.setLevel(clevel)

#设置文件日志

fh = logging.FileHandler(path,encoding='utf-8')

fh.setFormatter(fmt)

fh.setLevel(Flevel)

self.logger.addHandler(sh)

self.logger.addHandler(fh)

问题:使用json.loads()遇到的小问题

"zoneCode": 011,

在处理str字符串转json的时候,控制台一直报错

最后定位代码没有问题,而是需要处理的数据格式不正确。

011不能当做数字来处理,需要加上双引号

再次运行,问题解决了

问题:关于文件路径的写法

简单粗暴法:所有的’\’换成’/’,马上搞定

对仗工整法:所有的’\’换成’\’,这么做Python会将所有的’\’识别为普通字符,不管后面跟什么都不会看做转义

清晰明了法:将路径字符串写成r’ ‘,如r’C:\Users\Administrator\Desktop\test.doc’,告诉Python,引号里的东西都是字符串,不转义

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值