python 学习笔记11 (常用模块)2018-04-25

datetime模块

获取当前日期和时间

>>> from datetime import datetime
>>> now = datetime.now()
>>> print(now)
2018-04-25 09:01:40.674081
>>> print(type(now))

>>>

注意到datetime模块下还有一个datetime类,通过from datetime import datetime导入的才是datetime类。

import datetime
now=datetime.datetime.now()
print(now)

%Y 带世纪部分的十制年份
%m 十进制表示的月份
%d 十进制表示的每月的第几天
%H 24小时制的小时
%M 十时制表示的分钟数
%S 十进制的秒数

from datetime import datetime
y=datetime.now().year     #年
m=datetime.now().month    #月
d=datetime.now().day      #日

获取指定的某个时间和日期

>>> dt = datetime(2018,4,19,12,20)
>>> print(dt)
2018-04-19 12:20:00

datetime转换成时间戳timestamp
在计算机中,时间实际上是用数字表示的。我们把1970年1月1日 00:00:00 UTC+00:00时区的时刻称为epoch time,记为0(1970年以前的时间timestamp为负数),当前时间就是相对于epoch time的秒数,称为timestamp。

>>> dt.timestamp()
1524111600.0
>>>

注意到timestamp()是一个浮点数,如果有小数位,小数位表示毫秒数。

时间戳timestamp转换成datetime

>>> t
1524111600.0
>>> dt = datetime.fromtimestamp(t)
>>> print(dt)
2018-04-19 12:20:00

要把时间戳timestamp转换成datetime,使用datetime提供的fromtimestamp函数
注意到timestamp是一个浮点数,它没有时区的概念,而datetime是有时区的。上述转换是在timestamp和本地时间做转换,本地时间是指当前操作系统设定的时区。

timestamp 时间戳也可以直接被转换为UTC标准时间:

>>> t
1524111600.0
>>> print(datetime.utcfromtimestamp(t))
2018-04-19 04:20:00

str转换为datetime格式
很多时候用户输入的日期和时间是字符串,要处理日期和时间,首先必须把str转换成datetime。转换方法通过datetime.strptime(),需要一个日期和时间的格式化字符串。

>>> day = datetime.strptime('2018-6-6 06:19:59','%Y-%m-%d %H:%M
:%S')
>>> print(day)
2018-06-06 06:19:59

datetime转str
将datetime对象转换为字符串,展现给用户看;需要通过strftime()方法实现,同样需要一个日期和时间的格式化字符串:

>>> now = datetime.now()
>>> now
datetime.datetime(2018, 4, 25, 10, 47, 17, 272683)
>>> print(now.strftime('%Y-%m-%d %H:%M:%S'))
2018-04-25 10:47:17

datetime加减
对日期和时间进行加减实际上就是把datetime往后或往前计算,得到新的datetime。加减可以直接用+-运算,不过需要导入timedelta这个类:

>>> from datetime import datetime, timedelta
>>> now = datetime.now()
>>> now
datetime.datetime(2015, 5, 18, 16, 57, 3, 540997)
>>> now + timedelta(hours=10)
datetime.datetime(2015, 5, 19, 2, 57, 3, 540997)
>>> now - timedelta(days=1)
datetime.datetime(2015, 5, 17, 16, 57, 3, 540997)
>>> now + timedelta(days=2, hours=12)
datetime.datetime(2015, 5, 21, 4, 57, 3, 540997)

os模块

>>> import os
>>> os.name   #系统的名称
'nt'
>>>

nt 代表的是windows系统
posix 代表的是linux系统

执行系统命令

os.system(cmd)    #执行系统命令,但是没有返回结果
result = os.popen(cmd).read()     #这样就可以对reuslt进行控制了
print(result)

得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()

返回指定目录下的所有文件和目录名:os.listdir()

函数用来删除一个文件:os.remove()

删除多个目录:os.removedirs(r“c:\python”)

检验给出的路径是否是一个文件:os.path.isfile()

检验给出的路径是否是一个目录:os.path.isdir()

判断是否是绝对路径:os.path.isabs()

检查是否快捷方式os.path.islink ( filename )

检验给出的路径是否真地存:os.path.exists()

#判断文件是否存在
if not os.path.exists("test"):
    os.mkdir("test")

sys 系统模块

import  sys
f = open("2.log","w")
sys.stdout=f          #不会打印“hello world”,会写入1.log文件内
print("hello world")

注意 stdout 相当于开放io 输出到文件中

日志记录 logging模块

默认情况下:logging将日志打印到屏幕;
日志的几个级别:
debug ● DEBUG:详细的信息,通常只出现在诊断问题上。
● INFO:确认一切按预期运行
● WARNING:一个警告,可能会有一些意想不到的事情发生了,或表明
一些问题在不久的将来(例如。磁盘空间低”)。这个软件还能按预期工作
● ERROR:个更严重的问题,软件没能执行一些功能
● CRITICAL:一个严重的错误,这表明程序本身可能无法继续运行

import logging
logger = logging.debug("this is debug")
logger = logging.info("this is info")
logger = logging.warning("this is warning")
logger = logging.error("this is error")
logger = logging.critical("this is critical")

运行结果:

WARNING:root:this is warning
ERROR:root:this is error
CRITICAL:root:this is critical

默认情况下,只打印warning以上的级别
如果需要设置打印出来的级别可以通过logging.basicConfig()方法:

logging.basicConfig(level=logging.DEBUG)

logging.basicConfig函数各参数:

filename:指定日志文件名;

filemode:和file函数意义相同,指定日志文件的打开模式,'w'或者'a';

format:指定输出的格式和内容,format可以输出很多有用的信息,
参数:作用
%(levelno)s:打印日志级别的数值
%(levelname)s:打印日志级别的名称
%(pathname)s:打印当前执行程序的路径,其实就是sys.argv[0]
%(filename)s:打印当前执行程序名
%(funcName)s:打印日志的当前函数
%(lineno)d:打印日志的当前行号
%(asctime)s:打印日志的时间
%(thread)d:打印线程ID
%(threadName)s:打印线程名称
%(process)d:打印进程ID
%(message)s:打印日志信息
datefmt:指定时间格式,同time.strftime();
level:设置日志级别,默认为logging.WARNNING;
stream:指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略;

import logging
#配置基本信息
logging.basicConfig(level=logging.DEBUG,format='%(asctime)s-%(name)s-%(levelname)s-%(message)s') 
logger = logging.getLogger(__name__)
logger.debug("this is debug")
logger.info("this is info")
logger.warning("this is warning")
logger.error("this is error")
logger.critical("this is critical")

运行结果:

2018-04-25 22:01:50,934-__main__-DEBUG-this is debug
2018-04-25 22:01:50,965-__main__-INFO-this is info
2018-04-25 22:01:50,965-__main__-WARNING-this is warning
2018-04-25 22:01:50,965-__main__-ERROR-this is error
2018-04-25 22:01:50,965-__main__-CRITICAL-this is critical

将日志写到文件
日志写到指定的文件中,只需添加一个参数:filename=

import logging
#设置filename  日志保存的路径
logging.basicConfig(level=logging.DEBUG,filename='log1.txt',format='%(asctime)s-%(name)s-%(levelname)s-%(message)s')
logger = logging.getLogger(__name__)
logger.debug("this is debug")
logger.info("this is info")
logger.warning("this is warning")
logger.error("this is error")
logger.critical("this is critical")

运行的结果:


python 学习笔记11 (常用模块)2018-04-25_第1张图片
image.png

random模块

random.random() #0-1
random.randint(a, b) #a<=n<=b 整型
random.uniform(10, 20) #10 random.randrange(10, 100, 2) #结果相当于从[10, 12, 14, 16, ... 96, 98]序列中获取一个随机数。
random.sample的函数原型为:random.sample(sequence, k),从指定序列中随机获取指定长度的片断。sample函数不会修改原有序列。

你可能感兴趣的:(python 学习笔记11 (常用模块)2018-04-25)