一、os模块
它是一个Python的系统编程的操作模块,可以处理文件和目录
os.path.abspath(name):获得绝对路径
os.path.dirname(path):返回文件路径
二、redis数据库
它是一个高性能的key-value数据库
主要是Redis实现缓存数据的存储可以设置过期时间.对于一些高频读写、临时存储的数据特别适合.
三、codecs模块------用作编码转换↓
python编码转换过程:原有编码---》内部编码---》目的编码
import sys
print(sys.maxunicode)
# 如果输出的值为65535,那么就是UCS-2,如果输出是1114111就是UCS-4编码
a = " 风卷残云 "
print(type(a))
#转换编码为utf-8
b = a.encode("utf-8")
print(type(b))
四、使用codecs模块进行文件操作及消除文件中的BOM↓
----为什么我们要使用codecs呢?
因为在我们使用open方法打开文件时,open打开文件只能写入str类型,而不会管字符串是什么编码方式,当我们再使用open方式打开文件就会有问题。而codecs.open提供的方法可以指定一个编码打开文件,使用这个方法打开的文件读取返回的是unicode,写入时,如果参数是unicode,则使用open()指定的编码进行编码写入;如果是str,则先将源代码文件声明的字符编码,解码成unicode后在进行编码写入
----codecs相关的读写模式与Open类似,如:
r、w(仅写,若文件存在则内容先被清空)、a(仅写,文件存在,内容不会被清空)、r+(读写,待打开的文件必须存在)、w+(读写,若文件存在,内容将先被清空)、a+(读写,若文件存在,内容不会被清空)等等......
import os
import codecs
import configparser
# 获取当前文件目录的绝对路径
current_dir = os.path.abspath(os.path.dirname(__file__))
# 获取配置文件的绝对路径
config_path = os.path.join(os.path.dirname(current_dir), 'base_config.ini')
class ReadBaseConfig:
def __init__(self):
fd = open(config_path, encoding='utf-8')
data = fd.read()
#判断是否带有BOM文件,BOM文件通常是Excel格式,如果发现BOM_UTF8,则直接改写文件内容
if data[:3] == codecs.BOM_UTF8:
data = data[3:]
file = codecs.open(config_path, 'w')
file.write(data)
file.close()
fd.close()
# 实例化一个对象
self.config = configparser.ConfigParser()
#读取文件
self.config.read(config_path, encoding='utf-8')
#打印出配置文件的sections
print(self.config.sections())
五、上述导入的ConfigParser模块介绍 ↑
该模块适用于配置文件的格式,与windows.ini文件类似,可以包含一个或多个接(section),每个节可以有多个参数(键=值)。上述是用来读取配置文件的包。配置文件的格式如下,(以下配置根据公司具体而定,数据纯属虚构)
[data_base_dev]
host = rm-bp130fhjfijj0.mysql.rds.aliyuncs.com
username = wx1
password = 12345
[redis]
host = 172.0.0.1
password = 123456
port = 3006
[http]
base_url = http://wx1.
[configuration]
;使用哪个用户的配置信息
configuration_file = user_config_bak.ini
;使用哪一个数据库配置信息
use_database_config = data_base_dev
;使用哪个redis配置
use_redis_config = redis
;使用万能验证码
is_universal_password = True
六、数据库游标的作用
游标在处理数据中提供了在结果集中一次一行或者多行前进或向后浏览zhi数据的能力,可以dao把游标当作一个指针,它可以指定结果中的任何位置,然后允许用户对指定位置的数据进行处理。
七、连接redis与连接数据库的区别就是redis里面可以获取到验证码信息
redis相当于一个虚拟的数据库,当我们在针对数据访问量很大的时候,比如每日秒杀等等活动的时候,为了减少这种大数量量信息存入我们的数据库中,这时候我们就是需要新建一个和线上环境一样的数据库,然后定时对线上数据库中的信息进行转移,转移到redis数据库中进行存取
八、demjson介绍
demjson模块可以解决不正常的json格式
#一、不使用demjson时
import json
# javascript中的对象
js_json = "{x:1, y:2, z:3}"
# 解析不规则的json会报错
json.loads(js_json)
# 解析规则的json
py_json2 = '{"x":1, "y":2, "z":3}'
data = json.loads(py_json2)
print(data)
# {'y': 2, 'x': 1, 'z': 3}
#二、使用demjson时,上述js_json将会被解析不报错,输出的结果如下
import demjson
js_json = "{x:1, y:2, z:3}"
data = demjson.decode(js_json)
print(data)
# {'y': 2, 'x': 1, 'z': 3}
-----from demjson import encode
demjson的常用方法,一个是encode、另一个是decode
import demjson
data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]
# 将Python对象编码成JSON字符串
json = demjson.encode(data)
print json
以上代码执行结果为:
[{"a":1,"b":2,"c":3,"d":4,"e":5}]
-------------------------------------------------------------------------------------------
import demjson
# 将已编码的 JSON 字符串解码为Python对象
json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
text = demjson.decode(json)
print text
以上代码执行结果为:
{u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}