常用模块

常用模块

一、时间模块(time):

在Python中,通常有三种方式来表示:时间戳、元组、格式化的时间字符串
三种表达方式:
第一种:时间戳:表现形式是一种字符串形式

  • 时间戳
>>import time 
>>time.time()
>>1498028767.970267  #时间戳的表示是从1970年1月1日00:00:00开始按秒计算的偏移量
  • 时间字符串
>>> time.strftime("%Y-%m-%d %X")
'2017-06-21 03:12:15'
  • 时间元组又称结构化时间
>>> time.localtime()  #如果没有指定时间默认会结构化当前的时间
time.struct_time(tm_year=2017, tm_mon=6, tm_mday=21, tm_hour=3, tm_min=13, tm_sec=8, tm_wday=2, tm_yday=172, tm_isdst=1)
>>> c=time.localtime()
>>> c.tm_year
2017

这里以元组的形式输出,共有9个元素:(年,月,日,分,秒,一年中的第几周,一年中的第几天等)

三种时间是的类型:时间戳是给到计算机计算的,而字符串是给到用户看得

二、随机模块(random):

>>> import random
>>> random.random() 
0.6394147761575729   #没有指定范围默认为0-1的范围的浮点型
  • random.randint() #整数型随机数
>>> random.randint(1,4)  
2
>>> random.randint(1,4)
3
>>> random.randint(1,4)
3
>>> random.randint(1,4)
4
  • random.choice() #指定随机元素
>>> random.choice([1,4,3,"fs"])
'fs'
>>> random.choice([1,4,3,"fs"])
3
>>> random.choice([1,4,3,"fs"])
'fs'
>>> random.choice([1,4,3,"fs"])
4
>>> (random.choice([1,4,3,"fs"]),2)
(3, 2)
>>> (random.choice([1,4,3,"fs"]),2)
(4, 2)
  • random.shuffle() #打乱次序
>>> item=[1,2,3,44,21,9]
>>> random.shuffle(item)
>>> print(item)
[1, 21, 3, 2, 44, 9]
>>> print(item)
[1, 21, 3, 2, 44, 9]

三、hashlib模块

hashlib 是一个提供了一些流行的hash算法的 Python 标准库.其中所包括的算法有 md5, sha1, sha224, sha256, sha384, sha512. 另外,模块中所定义的 new(name, string=”) 方法可通过指定系统所支持的hash算法来构造相应的hash对象.

  • 单类摘要转换
import hashlib
m=hashlib.md5()  
m.update("hello".encode("utf-8"))  将摘要的字符串存在于m中
print(m.hexdigest())  #将m中摘要的字符(”hello“)#转化为16进制的密文

"D:\Program Files\python.exe" "E:/py_code/day 7/生成器.py"
5d41402abc4b2a76b9719d911017c592

Process finished with exit code 0
  • 多类摘要转换
import hashlib
m=hashlib.md5()
m.update("hello".encode("utf-8"))
m.update("world".encode("utf-8"))
print(m.hexdigest())  #这里得出的结果是将“helloworld"进行转换

"D:\Program Files\python.exe" "E:/py_code/day 7/生成器.py"
fc5e038d38a57032085441e7fe7010b0

Process finished with exit code 0

四、os模块

os模块:与操作系统交互的一个接口

  • os.getcwd() #查看当前目录的绝对路径
import os
print(os.getcwd())

"D:\Program Files\python.exe" "E:/py_code/day 7/生成器.py"
E:\py_code\day 7

Process finished with exit code 0
  • os.chdir() #切换工作目录
os.chdir(r"E:\py_code\day 8")  #切换工作目录到指定目录下
open("text.txt",'w')   #因为已经切换了目录所以这里的创建的一个文件会在切换的目录下
print(os.getcwd())

"D:\Program Files\python.exe" "E:/py_code/day 7/生成器.py"
E:\py_code\day 8

Process finished with exit code 0
  • makedirs()
os.makedirs("tesy/bash")  #递归创建先创建tesy然后在其下面在创建bash
  • removedirs()
os.removedirs("tesy/bash") #递归删除,但先判断文件是否为空在进行删除
  • listdir()
import os
print(os.listdir("E:\py_code\day 6"))  #将指定目录下的文件以列表的形式输出
  • os.rename()
import os
print(os.rename("a.txt","c.txt"))
  • os.stat()
import os
print(os.stat(r"E:\py_code\day 7\b.txt"))
下面是输出的结果:
"D:\Program Files\python.exe" "E:/py_code/day 7/生成器.py"
os.stat_result(st_mode=33206, st_ino=8444249301326323, st_dev=18467, st_nlink=1, st_uid=0, st_gid=0, st_size=68, st_atime=1497602601, st_mtime=1497602601, st_ctime=1497602543)

Process finished with exit code 0
解释:
st_ctime=1497602543:创建时间
st_mtime=1497602601:修改时间
st_atime=1497602601:访问时间
st_size=68:文件大小(字节)
  • os.name
import os
print(os.name) #显示当前的系统平台win-->输出“nt”  Linux-->输出“posix”
  • os.system() #运行shell命令,直接显示
import os
print(os.system("dir"))
  • os.path.abspath #显示指定文件的绝对路径
import os
print(os.path.abspath("b.txt"))

"D:\Program Files\python.exe" "E:/py_code/day 7/生成器.py"
E:\py_code\day 7\b.txt

Process finished with exit code 0
  • os.path.basename():取文件基名;os.path.dirname():取文件目录路径
import os
res=os.path.abspath("b.txt")
print(os.path.basename(res))
print(os.path.dirname(res))

"D:\Program Files\python.exe" "E:/py_code/day 7/生成器.py"
b.txt
E:\py_code\day 7

Process finished with exit code 0
  • os.path.join() #拼接
import os
s1=r"E:\py_code"
s2=r"day 3"
s=os.path.join(s1,s2)
print(s)

"D:\Program Files\python.exe" "E:/py_code/day 7/生成器.py"
E:\py_code\day 3

Process finished with exit code 0

五、sys模块

  • sys.version() #查看当前解释器的版本
import sys
print(sys.version) 

"D:\Program Files\python.exe" "E:/py_code/day 7/生成器.py"
3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)]

Process finished with exit code 0

  • sys.platform() #查看当前的操作系统版本
import sys
print(sys.platform)

"D:\Program Files\python.exe" "E:/py_code/day 7/生成器.py"
win32

Process finished with exit code 0
  • sys.argv #是用来获取命令行参数的,sys.argv[0]表示代码本身文件路径,所以参数从1开始
import sys
print(sys.argv)
username=sys.argv[1]   --->li
password=sys.argv[2]   --->4324225
E:\py_code\day 7>python 生成器.py li 4324225                                                                                                                                                                     
['生成器.py', 'li', '4324225'] 
  • sys.path
import sys
print(sys.path)

输出结果:
['E:\\py_code\\day 7', 'E:\\py_code', 'D:\\Program Files\\python36.zip', 'D:\\Program Files\\DLLs', 'D:\\Program Files\\lib', 'D:\\Program Files', 'D:\\Program Files\\lib\\site-packages']

六、logging模块

默认情况下Python的logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG),默认的日志格式为日志级别:Logger名称:用户输出消息。

import logging

logging.debug("debug")
logging.info("info")
logging.warning("warning")    #默认等级显示的等级,大于该等级的才会打印,小于该等级则不予显示
logging.error("error")
logging.critical("critical")
上述的显示效果是可以通过配置文件进行修改的:
cogfig:
import logging  
logging.basicConfig(level=logging.warning(设定显示等级),  
                    format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',  
                    datefmt='%a, %d %b %Y %H:%M:%S'(即format中的asctime的时间格式),  
                    filename='/tmp/test.log'(将输出指定到文件中),  
                    filemode='w')  
  
logging.debug('debug message')  
logging.info('info message')  
logging.warning('warning message')  
logging.error('error message')  
logging.critical('critical message')
下面是配置参数
logging.basicConfig()函数中可通过具体参数来更改logging模块默认行为,可用参数有:

filename:用指定的文件名创建FiledHandler,这样日志会被存储在指定的文件中。
filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。
format:指定handler使用的日志显示格式。
datefmt:指定日期时间格式。
level:设置rootlogger(后边会讲解具体概念)的日志级别
stream:用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件(f=open(‘test.log’,’w’)),默认为sys.stderr。若同时列出了filename和stream两个参数,则stream参数会被忽略。

format参数中可能用到的格式化串:
%(name)s Logger的名字
%(levelno)s 数字形式的日志级别
%(levelname)s 文本形式的日志级别
%(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
%(filename)s 调用日志输出函数的模块的文件名
%(module)s 调用日志输出函数的模块名
%(funcName)s 调用日志输出函数的函数名
%(lineno)d 调用日志输出函数的语句所在的代码行
%(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示
%(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数
%(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
%(thread)d 线程ID。可能没有
%(threadName)s 线程名。可能没有
%(process)d 进程ID。可能没有
%(message)s用户输出的消息

logger:

import logging
logger=logging.getLogger()  #生成一个对象

fh=logging.FileHandler("log.txt")  #创建一个文件的输出流指定文件名
fh.setLevel(logging.DEBUG)         #指定等级
sh=logging.StreamHandler()      #创建一个屏幕的输出流
logger.addHandler(sh)          #添加文件输出到指定文件中
logger.addHandler(fh)          #添加屏幕的输出流

fm=logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")  #修改输出流的格式并赋值给到fm方便调用

fh.setFormatter(fm) #调用输出流的格式给到文件输出流,运行后日志文件的输出格式将按fm的格式进行输出

logging.debug("debug")
logging.info("info")
logging.warning("warning")
logging.error("error")
logging.critical("critical")

七、序列化模块

  • 第一种dumps的转化方式:
import json
d={"name":"keny"}
s=json.dumps(d)   #将字典d转化为json字符串--->序列化
f=open("new","w")
f.write(s)      #将转化为json的字符串s写入文件中
f.close()
f2=open("new")
data=f2.read()
data=json.loads(data)  #将new文件中的json字符串反序列读取出来
print(data,type(data))
输出:
"D:\Program Files\python.exe" "E:/py_code/day 7/生成器.py"
{'name': 'keny'} <class 'dict'>  #输出的格式按保存的格式进行输出

Process finished with exit code 0
  • 第二种dump的转化方式:
import json
d={"name":"keny"}
f=open("new2",'w')
json.dump(d,f)   #1.将d转成json字符串;2.将json字符串写入f中
f.close()
f2=open("new2")
data=f2.read()
data=json.loads(data)  #将new文件中的json字符串反序列读取出来
print(data,type(data))
posted @ 2017-06-22 22:02  Sun珊珊来迟  阅读(146)  评论(0编辑  收藏  举报