使用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,引号里的东西都是字符串,不转义

你可能感兴趣的:(使用python遇到的问题汇总)