Python学习之==>常用模块
一、string模块
import string
print(string.ascii_letters) # 所有大小写字母
print(string.ascii_lowercase) # 所有小写字母
print(string.ascii_uppercase) # 所有大写字母
print(string.digits) # 所有数字
print(string.punctuation) # 所有特殊标点符号
print(string.printable) # 数字+字母+特殊字符
二、random模块
import random,string
pickts = ['A','J','Q','K',2,3,4,5,6]
random.shuffle(pickts) # 洗牌,打乱顺序(只能传list)
print(pickts)
print(random.randint(1,10)) # 随机取1到10之间的整数
print(round(random.uniform(1,99),2)) # 随机取1到99之间的小数,小数点后保留2位小数
print(random.choice([1,2,3,4])) # 随机取数组当中的1个元素
print(random.sample(string.printable,5)) # 随机取N个元素,返回的是list
三、sys模块
import sys
print(sys.platform) # 判断是什么操作系统
sys.path.append(BASEPATH) # 将BASEPATH插到环境变量最后
sys.path.insert(0,BASEPATH) # 将BASEPATH插到环境变量最前面,效率高
print(sys.path) # Python的环境变量
print(sys.version) #获取Python解释程序的版本信息
print(sys.argv) # 用来获取命令行里面运行python文件的时候传入的参数,它返回的是一个list
# 它默认就有一个参数,就是当前文件的文件名,如果运行的命令在该python文件名后还带有参数则该参数也会加入返回的list当中
# 在命令行中输入:python sys模块.py --help
# 返回:['sys模块.py', '--help']
下面写一段程序来说明sys.argv的作用
1、它是用来获取命令行里面运行python文件的时候传入的参数
2、它返回的是一个list
3、这个list默认就有一个参数,就是当前的这个文件名
import sys
command = sys.argv
print(command)
if len(command) > 1:
cmd1 = command[1]
if cmd1 == '--help':
print('这是个帮助文档'
'这个python文件是用来说明sys.argv的作用')
elif cmd1 == 'os':
print('当前的操作系统是%s'%sys.platform)
else:
print('输入命令有误')
else:
print('运行python文件的时候需要传入一个参数,'
'e.g:'
'python xx.py install'
)
# 输入命令:python tools.py --help
# 返回:['tools.py', '--help'] 这是个帮助文档这个python文件是用来说明sys.argv的作用
# 输入命令:python tools.py os
# 返回:['tools.py', '--help'] 当前的操作系统是win32
# 输入命令:python tools.py
# 返回:['tools.py'] 运行python文件的时候需要传入一个参数,e.g:python xx.py install
四、os模块
# 对操作系统的一些操作
import os
print(os.getcwd()) # 获取当前目录
os.chmod('/usr/local',777) # 给文件或目录加权限,一般用于linux操作系统(1执行2写4读)
print(os.chdir('../')) # 更改目录,可以填相对路径和绝对路径(与Linux一样),没有返回值
print(os.makedirs('niuniu/python')) # 递归创建目录,父目录不存在时会自动创建,可创建多层目录
print(os.mkdir('nhy')) # 创建目录,父目录不存在会报错,只能创建一级目录
print(os.removedirs('niuniu/python')) # 递归删除目录,只能删除空目录
print(os.rmdir('nhy')) # 删除指定目录,只能删除空目录
print(os.remove('test.py')) # 删除文件,只能删除文件
print(os.listdir('e:\\')) # 列出目录下的所有文件和目录,放在一个list里面
print(os.rename('test','test1')) # 重命名
print(os.stat('day6.py')) # 获取文件信息
print(os.sep) # 根据当前操作系统自动生成路径分隔符
print('day6'+os.sep+'x.py') # 拼路径
print(os.linesep) # 当前操作系统的换行符
print(os.pathsep) # 当前系统环境变量中每个路径的分隔符,linux是冒号,Windows是分号
print(os.environ) # 当前系统的环境变量
print(os.name) # 当前系统名称,Windows是nt,Linux是posix
print(os.system('dir')) # 执行操作系统命令,获取不到结果(返回的是0执行成功或1执行失败)
print(os.popen('ipconfig').read()) # 执行操作系统命令,能获取到命令执行的结果
print(os.path.abspath('.')) # 获取当前目录的绝对路径
print(os.path.abspath(__file__)) # 获取到当前文件的绝对路径
print(os.path.split('E:\Pycharm_Workspace\day6.py')) # 分割路径和文件名,返回的是一个元组,第一个元素是路径,第二个元素是文件名
print(os.path.dirname('E:\Pycharm_Workspace\Python-code')) # 获取父目录,获取它的上一级目录
print(os.path.basename('/usr/local/test.txt')) # 获取路径的最后一级,如果是文件则显示文件
print(os.path.exists('E:\Pycharm_Workspace\Python-code')) # 判断目录/文件是否存在
print(os.path.isabs('./')) # 判断是否绝对路径
print(os.path.isfile('E:\day6.py')) # 判断是否是一个文件,判断文件是否存在
print(os.path.isdir('E:\day6')) # 判断是否是一个目录,判断目录是否存在
print(os.path.getsize('E:\Pycharm_Workspace\Python-code\day6\day6.py')) # 获取文件的大小
print(os.path.join(r'\usr','local','tomcat','logs')) # 拼接成一个路径
os.walk('E:\Pycharm_Workspace') # 遍历目录,列出目录下所有的目录和文件,一层一层下去
# 循环三个变量,分别代表路径、目录和文件
# abs_path 当前循环的绝对路径
# dir 目录下面的所有文件夹
# file 目录下的所有文件
for abs_path,dir,file in os.walk(r'E:\Pycharm_Workspace\Python-code\day6\test'):
print(abs_path,dir,file)
练习一:在logs目录下创建子目录及在各目录下创建相关日志文件
import datetime,os
dirs = ['tomcat','nigix','apache','python','app','android','ios']
base_path = 'E:\logs'
os.chdir(base_path)
for d in dirs:
os.mkdir(d)
os.chdir(d)
for i in range(10):
t = datetime.date.today() + datetime.timedelta(days=-i)
name = '%s_%s.log'%(d,t)
open(name,'w',encoding='utf-8')
os.chdir('../')
练习二:往日期为双数的日志文件中写内容
import os
for abs_path,dir,file in os.walk('E:\logs'):
for f in file:
day = f.split('.')[0].split('-')[-1]
if int(day)%2 == 0:
file_name = os.path.join(abs_path,f) # 拼接绝对路径
open(file_name,'w',encoding='utf-8').write('测试中')
五、time模块
1、基本用法:
import time
print(time.time()) # 获取当前时间戳:从unix元年到现在过了多少秒
print(time.gmtime()) # 取标准时区的时间(比中国时间慢8小时),返回的是时间元组
print(time.localtime()) # 取当前时区的时间,返回的是时间元组
print(time.strftime('%Y-%m-%d')) # 获取格式化好的时间,格式可以自己定义
print(time.strftime('%Y-%m-%d %H:%M:%S'))
print(time.strftime('%Y%m%d%H%M%S'))
# Y:年,m:月,d:日,H:时,M:分,S:秒
time.sleep(5) # 等待时间5秒
2、把时间戳转换成格式化好的时间:
a、先把时间戳转换成时间元组
b、再把时间元组转换成格式化好的时间
import time
f = time.time() # 获取当前时间戳
s = time.localtime(f) # 把时间戳转换成时间元组
m = time.strftime('%Y-%m-%d %H:%M:%S',s) # 把时间元组转换成格式化时间
print(m)
定义函数:把时间戳转换成格式化好的时间函数
a、不传入时间戳的话,返回当前格式化好的时间
b、传入时间的话,把时间戳转换成格式化好的时间并返回
def timestamp_to_fomat(timestamp=None,format='%Y-%m-%d %H:%M:%S'):
if timestamp:
time_tuple = time.localtime(timestamp)
res = time.strftime(format,time_tuple)
else:
res = time.strftime(format) # 默认取当前时间
return res
print(timestamp_to_fomat())
print(timestamp_to_fomat(1224398473))
print(timestamp_to_fomat(1224398473,'%Y-%m-%d'))
3、把格式化好的时间转换成时间戳:
a、先把格式化好的时间转换成时间元组
b、再把时间元组转换成时间戳
import time
m = '2017-1-1 18:20:11' # 定义格式化好的时间
p = time.strptime(m,'%Y-%m-%d %H:%M:%S') # 把格式化好的时间转换成时间元组
s = time.mktime(p) # 把时间元组转换成时间戳
print(s)
定义函数:把格式化好的时间转换成时间戳函数
a、不传入格式化好的时间的话,返回当前时间戳
b、传入格式化好的时间的话,把格式化好的时间转换成时间戳并返回
def strToTimestamp(str=None,format='%Y-%m-%d %H:%M:%S'):
if str: # 如果传了时间
tp = time.strptime(str,format) # 转成时间元组
res = time.mktime(tp) # 再转成时间戳
else:
res = time.time() # 默认取当前时间戳
return int(res)
print(strToTimestamp())
print(strToTimestamp('2011-2-28 12:30:15'))
print(strToTimestamp('2011-2-28','%Y-%m-%d'))
六、datetime模块
datetime模块和time模块类似,也可以进行时间戳、时间元组以及格式化时间的相互转换。
import datetime
print(datetime.datetime.today()) # 获取当前时间,精确到秒
print(datetime.date.today()) # 获取当前时间,精确到天
print(datetime.datetime.now()) # 当然时间格式化输出
res = datetime.date.today() + datetime.timedelta(days=5)#获取5天以后的时间
res = datetime.date.today() + datetime.timedelta(days=-5)#获取5天以前的时间
res = datetime.date.today() + datetime.timedelta(weeks=5)#获取5周以后的时间
res = datetime.datetime.today() + datetime.timedelta(hours=5)#获取5小时以后的时间
res = datetime.datetime.today() + datetime.timedelta(minutes=5)#获取5分钟以后的时间
res = datetime.datetime.today() + datetime.timedelta(seconds=5)#获取5秒钟以后的时间
res = datetime.datetime.today() + datetime.timedelta(days=5,hours=5,minutes=5,seconds=5,weeks=5)
print(res.strftime('%Y%m%d--%H%M%S')) # 格式化时间输出
print(res)
七、hashlib模块
hashlib模块用于加密,加密方式包括:md5、sha1、sha224、sha256、sha384、sha512、blake2b、blake2s、sha3_224、sha3_256、sha3_384、sha3_512、
shake_128和shake_256等等。
import hashlib
passwd = 'jj123' # 普通字符串不能加密,必须是二进制的bytes
f = passwd.encode() # 把字符串转成bytes(二进制)类型
m = hashlib.md5() # 定义加密方法
m.update(f) # 对bytes(二进制)类型字符串进行加密
print(m.hexdigest()) # 获取结果返回
# md5加密是不可逆的 # 其他加密方法,用法与md5一样,只是返回的密文长度不一样
passwd = 'jack'
f = passwd.encode()
m = hashlib.sha256()
m.update(f)
print(m.hexdigest())
封装加密函数:
def my_md5(str):
new_str = str.encode() # 把字符串转成bytes类型
# new_str = b'%s'%str # 把字符串转成bytes类型
m = hashlib.md5() # 实例化md5对象
m.update(new_str) # 加密
return m.hexdigest() # 获取结果返回
Python学习之==>常用模块的更多相关文章
- Python学习 :常用模块(二)
常用模块(二) 四.os模块 os模块是与操作系统交互的一个接口,用于对操作系统进行调用 os.getcwd() # 提供当前工作目录 os.chdir() # 改变当前工作目录 os.curdir( ...
- Python学习笔记-常用模块
1.python模块 如果你退出 Python 解释器并重新进入,你做的任何定义(变量和方法)都会丢失.因此,如果你想要编写一些更大的程序,为准备解释器输入使用一个文本编辑器会更好,并以那个文件替代作 ...
- Python学习 :常用模块(三)----- 日志记录
常用模块(三) 七.logging模块 日志中包含的信息应有正常的程序访问日志,还可能有错误.警告等信息输出 python的 logging 模块提供了标准的日志接口,你可以通过它存储各种格式的日志, ...
- python 学习分享-常用模块篇
模块 就是前人给你造的轮子,你开车就好!!! 常用模块有: time模块 random模块 os模块 sys模块 shutil模块 json & picle模块 shelve模块 xml处 ...
- Python学习-day5 常用模块
day5主要是各种常用模块的学习 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 conf ...
- Python学习 :常用模块(四)----- 配置文档
常用模块(四) 八.configparser 模块 官方介绍:A configuration file consists of sections, lead by a "[section]& ...
- Python学习 :常用模块(一)
常用模块(一) 一.时间(time)模块 时间戳 (Timestamp):时间戳表示的是从1970年1月1日00:00:00为计时起点,到当前的时间长度 import time print(help( ...
- 06 python学习笔记-常用模块(六)
一. 模块.包 1.什么是模块? Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句,是用来组织代码的.模块能定义函数 ...
- python学习之常用模块
随机推荐
- Win10+Linux(CentOS) 双系统安装教程--踩坑实录
最近心血来潮想给自己的笔记本装一套linux系统作为开发环境, 说干就干,首先先收集一下现在linux主流版本, 貌似现在市场上应用服务器比较多的是redhat相关产品,而ubuntu的优势在于它庞大 ...
- C++ 程序设计语言
好记性不如烂笔头. 第六章 标准库给出了静态断言,形式类似如下: stastic_assert(A,S);//当A不为true时,把S作为一条编译器错误信息输出 其最重要的用途是为泛型编程中作为形参的 ...
- 终于明白上一篇的一顿误操作是什么了,是$,不是S !!!!!
1,在命令行中输入export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin这样可以保证命令行命令暂时可以使用.命令执行完之后先不要关闭终端2. ...
- AIX中的网络管理
1.AIX中网络配置 AIX支持的适配器: #lsdev -Cc adapter 查看网络适配器: #lsdev -Cc if 修改网卡属性 #smitty chgenet ...
- Spring MVC使用AOP实现审计日志
先定一个注解,用于在Controller方法上记录每个方法的用途. package com.zjf.spring.annotation; import java.lang.annotation.Doc ...
- MyBatis主配置文件(转载)
原文地址:http://limingnihao.iteye.com/blog/1060764 其中高亮字体是我的理解. 在定义sqlSessionFactory时需要指定MyBatis主配置文件: X ...
- SSH开发环境整合
第一步:Spring开发环境搭建 1.1: 添加配置文件和相应spring-3.2-core.Jar 核心包 配置文件 <?xml version="1.0" encodin ...
- C语言做的句柄程序
以vs2015为例---创建对话框程序 一直下一步,下一步,到最后 通过一个小型程序诸如 microsoft spy++我们可以获悉,窗口中失效按钮的句柄为0x00040AE8,由此我们可以给句柄发 ...
- HDU-4810-wall Painting(二进制, 组合数)
链接: https://vjudge.net/problem/HDU-4810 题意: Ms.Fang loves painting very much. She paints GFW(Great F ...
- vue 父组件使用keep-alive和infinite-scroll导致在子组件触发父组件的infinite-scroll方法
(vue.js)vue 父组件使用keep-alive和infinite-scroll导致在子组件触发父组件的infinite-scroll方法”问题疑问,本网通过在网上对“ (vue.js)vue ...