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))
<class 'datetime.datetime'>
>>>

注意到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 <info<waring<error<critical
● 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")

运行的结果:


image.png

random模块

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,290评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,107评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,872评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,415评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,453评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,784评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,927评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,691评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,137评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,472评论 2 326
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,622评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,289评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,887评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,741评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,977评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,316评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,490评论 2 348

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,629评论 18 139
  • From:Python之日志处理(logging模块) - 云游道士 - 博客园 https://www.cnbl...
    vigny的先生阅读 2,679评论 3 5
  • 参考:http://blog.csdn.net/wuce_bai/article/details/50827393...
    Babyzpj阅读 790评论 0 0
  • 和大家不同,真正使我爱上周星驰的电影,是三年前的《西游降魔篇》。《大话西游》引起网络狂欢时我尚年幼,《功夫》上映...
    过犹不及阅读 975评论 4 13
  • 每一次呼吸 都是一场盛大的赞礼 双手合起! 村庄 稻田 朝夕 听到的或是 身影!弯曲 而赞美希望 火红的幸福 双眼...
    海子三月归阅读 658评论 12 37