常用模块以及常用方法

Python常用模块详解

一、os模块

res = os.system('ifconfig')#os.system执行操作系统的命令,在不需要返回请求结果的情况下用
print(res)#结果是0

res1 = os.popen('ifconfig')
print(res1.read())#获取到返回结果

二、sys模块

sys.argv 它是一个list,是用来获取你执行python文件的时候它的参数的,第一个元素的当前你运行的这个python文件的文件名。具体看下面的例子:

test2.py:

import os,sys

inpu = sys.argv
print(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))#从序列中随机取几个元素,返回是一个list

f =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)#和标准时间相差的时间,单位是s
print(time.time())#获取当前时间戳
print(time.sleep(1))#休息几s
print(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)#执行sql
row_1 = cur.fetchone()# 获取查询结果的第一条数据,返回的是一个元组
row_2 = cur.fetchmany(5)# 获取前n行数据,返回一个元组
row_3 = cur.fetchall()# 获取所有数据,返回一个元组
connect.commit()#提交
print(row_3)

如果想要获取到的结果是一个字典类型的话,可以导入from pymysql.cursors import DictCursor

import pymysql
from pymysql.cursors import DictCursor
connect = 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)

转载于:https://www.cnblogs.com/nagisaling/p/7809376.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值