一、os模块
res = os.system('ifconfig')#os.system执行操作系统的命令,在不需要返回请求结果的情况下用print(res)#结果是0res1 = os.popen('ifconfig')print(res1.read())#获取到返回结果
二、sys模块
sys.argv 它是一个list,是用来获取你执行python文件的时候它的参数的,第一个元素的当前你运行的这个python文件的文件名。具体看下面的例子:
test2.py:
import os,sysinpu = sys.argvprint(inpu)if len(inpu) < 3: print('参数错误')else: file = inpu[1] content = inpu[2] f = open(file,'w') f.write(content)
在Terminal中运行python文件,并给他传2个参数 test.txt和你好啊
sys.argv的结果['test2.py', 'test.txt', '你好啊'],这个list的第一个元素是当前你运行的python文件的文件名
三、random模块
print(random.random()) # 随机浮点数,默认取0-1,不能指定范围print(random.randint(1, 20)) # 随机整数print(random.choice('sdfsd233')) # 随机取一个元素print(random.sample('hello234234史蒂夫34', 4))#从序列中随机取几个元素,返回是一个listf =random.uniform(1, 9) # 随机取浮点数,可以指定范围x = [1, 2, 3, 4, 6, 7]random.shuffle(x) # 洗牌,打乱顺序,会改变原list的值print(x)
四、json模块
names = { "name":"中文", "age":36, "assfdf":223, "sdfsdf":23232323, "sdfsdf1":23232323}names_json = '{"name": "wjx", "age": 36, "assfdf": 223, "sdfsdf": 23232323, "sdfsdf1": 232323234}'with open('aaa.json','w',encoding='utf-8') as f: res = json.dumps(names,ensure_ascii=False)#把字典转成json串 ensure_ascii=False可以显示中文 f.write(res)names1 = json.loads(names_json)print(names1)
或者
with open('aaa.json',encoding='utf-8') as f1: name_dict = json.load(f1) print(name_dict)fw = open('aaa.json','w',encoding='utf-8')json.dump(names,fw,ensure_ascii=False,indent=4)#以4个空格缩进,便于观看
dumps:序列化一个对象
loads: 从一个对象加载数据
dump:将一个对象序列化存入文件
load:从一个打开的文件句柄加载数据
在生成的json中可以选择Code-->Reformat Code让json的排列更便于观看。
五、time,datetime模块
print(time.timezone)#和标准时间相差的时间,单位是sprint(time.time())#获取当前时间戳print(time.sleep(1))#休息几sprint(time.gmtime())#把时间戳转换成时间元组,如果不传的话,默认取标准时区的时间戳print(time.localtime())#把时间戳转换成时间元组,如果不传的话,默认取当前时区的时间戳print(time.mktime(time.localtime()))#把时间元组转换成时间戳print(time.strftime("%Y-%m-%d %H:%M:%S"))#将时间元组转换成格式化输出的字符串print(time.strptime("20160204 191919","%Y%m%d %H%M%S"))#将格式化的时间转换成时间元组print(time.struct_time)#时间元组print(time.asctime())#时间元转换成格式化时间print(time.ctime())#时间戳转换成格式化时间print(datetime.datetime.now())#当然时间格式化输出print(datetime.datetime.now()+datetime.timedelta(3))#3天后的时间print(datetime.datetime.now()+datetime.timedelta(-3))#3天前的时间
六、hashlib模块
主要用于加密相关的操作,在python3的版本里,代替了md5和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512
用法都大致相同,以md5加密为例
md = hashlib.md5()#构造一个md5对象md.update(b'abc123')print(md.hexdigest())
但是当加密的内容过于简单的时候,可以通过撞库的方法,暴力破解出内容
所以就要加盐加密
def md5_password(str,salt = '#^&*(Q$^*&Q^$'): str = str + salt import hashlib md = hashlib.md5() md.update(str.encode()) return md.hexdigest()print(md5_password('abc123'))
七、redis模块
redis是一个nosql类型的数据库,数据都存在内存中,有很快的读写速度,python操作redis使用redis模块,pip安装即可
r = redis.Redis(host='211.149.218.16',port=6378,password='123456',db=2)#指定连接redis的端口和ip以及哪个数据库r.set('zdq','nizhenhao@')#set string类型的值print(r.get('zdq').decode())#获取值r.hset('hname', 'key', 'value')#set 哈希类型的值print(r.hgetall('hname')) # 获取这个name里所有的key和value
将db2中的数据转移
r = redis.Redis(host='211.149.218.16',port=6378,password='123456',db=2)#指定连接redis的端口和ip以及哪个数据库r_new = redis.Redis(host='211.149.218.16',port=6378,password='123456',db=12)for k in r.keys(): k_type = r.type(k).decode() if k_type == 'string': v = r.get(k) r_new.set(k,v) elif k_type == 'hash': hash_data = r.hgetall(k) for k2,v2 in hash_data.items(): r_new.hset(k,k2,v2) else: print('error')
八、pymysql模块
import pymysql# 创建连接,指定数据库的ip地址,账号、密码、端口号、要操作的数据库、字符集connect = pymysql.connect(host = '211.149.218.16',port = 3306 ,user = 'jxz',passwd = '123456',db = 'jxz',charset = 'utf8')cur = connect.cursor()#建立游标,仓库管理员sql = 'select * from stu '# insert_sql = 'insert into stu VALUE (89,"zhangdq");'# cur.execute(insert_sql)cur.execute(sql)#执行sqlrow_1 = cur.fetchone()# 获取查询结果的第一条数据,返回的是一个元组row_2 = cur.fetchmany(5)# 获取前n行数据,返回一个元组row_3 = cur.fetchall()# 获取所有数据,返回一个元组connect.commit()#提交print(row_3)
如果想要获取到的结果是一个字典类型的话,可以导入from pymysql.cursors import DictCursor
import pymysqlfrom pymysql.cursors import DictCursorconnect = pymysql.connect(host = '211.149.218.16',port = 3306 ,user = 'jxz',passwd = '123456',db = 'jxz',charset = 'utf8')cur = connect.cursor(DictCursor)#指定游标的类型,字典类型sql = 'select * from stu 'cur.execute(sql)res = cur.fetchall()connect.commit()print(res)