Python常用模块二

一.time & datetime

 1 #_*_coding:utf-8_*_
 2
 3
 4 import time
 5
 6
 7 # print(time.clock()) #返回处理器时间,3.3开始已废弃 , 改成了time.process_time()测量处理器运算时间,不包括sleep时间,不稳定,mac上测不出来
 8 # print(time.altzone)  #返回与utc时间的时间差,以秒计算\
 9 # print(time.asctime()) #返回时间格式"Fri Aug 19 11:14:16 2016",
10 # print(time.localtime()) #返回本地时间 的struct time对象格式
11 # print(time.gmtime(time.time()-800000)) #返回utc时间的struc时间对象格式
12
13 # print(time.asctime(time.localtime())) #返回时间格式"Fri Aug 19 11:14:16 2016",
14 #print(time.ctime()) #返回Fri Aug 19 12:38:29 2016 格式, 同上
15
16
17
18 # 日期字符串 转成  时间戳
19 # string_2_struct = time.strptime("2016/05/22","%Y/%m/%d") #将 日期字符串 转成 struct时间对象格式
20 # print(string_2_struct)
21 # #
22 # struct_2_stamp = time.mktime(string_2_struct) #将struct时间对象转成时间戳
23 # print(struct_2_stamp)
24
25
26
27 #将时间戳转为字符串格式
28 # print(time.gmtime(time.time()-86640)) #将utc时间戳转换成struct_time格式
29 # print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()) ) #将utc struct_time格式转成指定的字符串格式
30
31
32
33
34
35 #时间加减
36 import datetime
37
38 # print(datetime.datetime.now()) #返回 2016-08-19 12:47:03.941925
39 #print(datetime.date.fromtimestamp(time.time()) )  # 时间戳直接转成日期格式 2016-08-19
40 # print(datetime.datetime.now() )
41 # print(datetime.datetime.now() + datetime.timedelta(3)) #当前时间+3天
42 # print(datetime.datetime.now() + datetime.timedelta(-3)) #当前时间-3天
43 # print(datetime.datetime.now() + datetime.timedelta(hours=3)) #当前时间+3小时
44 # print(datetime.datetime.now() + datetime.timedelta(minutes=30)) #当前时间+30分
45
46
47 #
48 # c_time  = datetime.datetime.now()
49 # print(c_time.replace(minute=3,hour=2)) #时间替换

二.random

1 import random
2 print(random.random())
3 print(random.randint(1,2))
4 print(random.randrange(1,10))

生成随机验证码

 1 import random
 2 checkcode = ‘‘
 3 for i in range(4):
 4     current = random.randrange(0,4)
 5     if current != i:
 6         temp = chr(random.randint(65,90))
 7     else:
 8         temp = random.randint(0,9)
 9     checkcode += str(temp)
10 print(checkcode)

三.shutil模块

shutil模块提供了大量的文件的高级操作。特别针对文件拷贝和删除,主要功能为目录和文件操作以及压缩操作。对单个文件的操作也可参见os模块。

(1) 拷贝

1 >>> import shutil
2 >>> shutil.chown(‘test.txt‘,user=‘mysql‘,group=‘mysql‘) #改变文件的属主和属组
3 >>> shutil.copy(‘test.txt‘,‘test_copy.txt‘) #拷贝文件
4 >>> shutil.copy2(‘test.txt‘,‘test_copy2.txt‘) #拷贝文件并复制所有统计信息,如修改时间等。
5 >>> shutil.copyfile(‘test_ln.txt‘,‘test_copyfile.txt‘) #如果是链接文件,将复制新文件,不复制链接
 1 >>> dstf = open(‘test_copyfileobj.txt‘,‘r+‘)
 2 >>> srcf = open(‘test.txt‘,‘r‘)
 3 >>> shutil.copyfileobj(srcf,dstf,length=2)  #按长度拷贝文件对象
 4
 5 >>> shutil.copymode(‘test.txt‘,‘test_copymode.txt‘)  #拷贝文件的权限到目标文件上
 6
 7 >>> shutil.copystat(‘test.txt‘,‘test_copymode.txt‘)  #拷贝文件的访问和修改时间,其他不受影响
 8 #shutil.copytree(src, dst, symlinks=False, ignore=None) 递归的去拷贝文件夹
 9 #shutil.rmtree(path[, ignore_errors[, onerror]])  递归的去删除文件
10 #shutil.move(src, dst)  递归的去移动文件,它类似mv命令,其实就是重命名。

(2)压缩与解压缩

make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0,                 dry_run=0, owner=None, group=None, logger=None)创建压缩包并返回文件路径:base_name:压缩包的文件名,也可以是压缩包的路径,只是文件名时,保存到当前目录,否则保存到指定路径format:压缩包种类,‘zip’,‘tar‘,‘bztar‘,‘gztar‘root_dir:要压缩的文件夹路径(默认当前目录)owner:用户,默认当前用户group:组,默认当前组logger:用于记录日志,通常是logging.Logger对象
1 >>>import shutil
2 #将/root目录下的所有文件压缩到media目录下取名为www,压缩格式为tar
3 >>> ret = shutil.make_archive("/media/www",‘tar‘,root_dir=‘/root‘)
4
5 #将文件已tar格式压缩到当前目录下
6  ret = shutil.make_archive("ipython55",‘tar‘,root_dir=‘/root/ipython-5.5.0‘)

shutil 对压缩包的处理是通过调用ZipFile 和 TarFile两个模块来进行的。

 1 >>> import zipfile
 2 #压缩
 3 >>> z = zipfile.ZipFile(‘xin.tar.gz‘,‘w‘)   #创建名为xin.tar.gz的压缩文件
 4 >>> z.write(‘test.txt‘)   #写入文件到压缩文件中
 5 >>> z.write(‘log.txt‘)
 6 >>> z.close()   #关闭文件
 7 #解压缩
 8 >>> z = zipfile.ZipFile(‘xin.tar.gz‘,‘r‘)   #打开压缩文件
 9 >>> z.extractall(path=‘/python/day7‘)  #解压到指定路径下
10 >>> z.close()
11
12
13 >>> import tarfile
14 #压缩
15 >>> tar = tarfile.open(‘/usr/targzfile.tar.gz‘,‘w‘)  #指定目录创建压缩文件
16 >>> tar.add(‘/python/day7/test1.py‘,arcname=‘test1.py‘)  #添加文件到压缩文件中
17 >>> tar.add(‘/python/day7/test1.py‘,arcname=‘test2.py‘)
18 >>> tar.close()
19
20 #解压缩
21 >>> tar = tarfile.open(‘/usr/targzfile.tar.gz‘,‘r‘)
22 >>> tar.extractall(path=‘/pyhton/day8‘)
23 >>> tar.close()

四.xml模块

XML 指可扩展标记语言(eXtensible Markup Language),标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。

XML 被设计用来传输和存储数据。

XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。

它也是元标记语言,即定义了用于定义其他与特定领域有关的、语义的、结构化的标记语言的句法语言。

python对XML的解析:

常见的XML编程接口有DOM和SAX,这两种接口处理XML文件的方式不同,当然使用场合也不同。

python有三种方法解析XML,SAX,DOM,以及ElementTree:

使用xml.etree.ElementTree模块来解析XML文件,ElementTree模块中提供了两个类用来完成这个目的:

ElementTree表示整个XML文件(一个树形结构)

Element表示树种的一个元素(结点)

示例xml文件:

 1 <collection shelf="New Arrivals">
 2 <movie title="Enemy Behind">
 3    <type>War, Thriller</type>
 4    <format>DVD</format>
 5    <year>2003</year>
 6    <rating>PG</rating>
 7    <stars>10</stars>
 8    <description>Talk about a US-Japan war</description>
 9 </movie>
10 <movie title="Transformers">
11    <type>Anime, Science Fiction</type>
12    <format>DVD</format>
13    <year>1989</year>
14    <rating>R</rating>
15    <stars>8</stars>
16    <description>A schientific fiction</description>
17 </movie>
18    <movie title="Trigun">
19    <type>Anime, Action</type>
20    <format>DVD</format>
21    <episodes>4</episodes>
22    <rating>PG</rating>
23    <stars>10</stars>
24    <description>Vash the Stampede!</description>
25 </movie>
26 <movie title="Ishtar">
27    <type>Comedy</type>
28    <format>VHS</format>
29    <rating>PG</rating>
30    <stars>2</stars>
31    <description>Viewable boredom</description>
32 </movie>
33 </collection>

首先需要导入ElementTree模块:import xml.etree.ElementTree as ET

然后使用ET下的方法parse解析XML文档:ET.parse()

 1 >>> import tab
 2 >>> import xml.etree.ElementTree as ET   #导入模块
 3 >>> tree = ET.parse("xmltest.xml")  #解析xml文档
 4 >>> root = tree.getroot()   #获取根节点
 5 >>> print(root.tag)   #打印节点
 6 collection
 7 >>> print(root[1][1].tag,root[1][1].text)  #通过索引解析根的子节点和数值
 8 format DVD
 9 #取出整个xml文档的内容
10 >>> for child in root:   #循环根节点
11 ...   print(child.tag,child.attrib)  #打印节点和属性
12 ...   for i in child:   #再循环内层节点
13 ...     print("---",i.tag,i.text)  #打印节点和数值
14 ...
15 #输出内容:
16 movie {‘title‘: ‘Enemy Behind‘}
17 --- type War, Thriller
18 --- format DVD
19 --- year 2003
20 --- rating PG
21 --- stars 10
22 --- description Talk about a US-Japan war
23 movie {‘title‘: ‘Transformers‘}
24 --- type Anime, Science Fiction
25 --- format DVD
26 --- year 1989
27 --- rating R
28 --- stars 8
29 --- description A schientific fiction
30 movie {‘title‘: ‘Trigun‘}
31 --- type Anime, Action
32 --- format DVD
33 --- episodes 4
34 --- rating PG
35 --- stars 10
36 --- description Vash the Stampede!
37 movie {‘title‘: ‘Ishtar‘}
38 --- type Comedy
39 --- format VHS
40 --- rating PG
41 --- stars 2
42 --- description Viewable boredom
43
44 #只遍历type节点
45 >>> for i in root.iter(‘type‘):  #iter检索节点名
46 ...   print(i.tag,i.text)
47 ...
48 type War, Thriller
49 type Anime, Science Fiction
50 type Anime, Action
51 type Comedy

修改和添加属性,删除节点:

 1 >>> import tab
 2 >>> import xml.etree.ElementTree as ET
 3 >>> tree = ET.parse("xmltest.xml")
 4 >>> root = tree.getroot()
 5
 6 >>> root[1][2].text = "2017"  #通过索引修改某个节点的值
 7 >>> tree.write(‘xmltest.xml‘)  #将修改写入文档中
 8 #循环修改索引的year节点数值
 9 >>> for i in root.iter(‘year‘):
10 ...   new_year = int(i.text)+1
11 ...   i.text = str(new_year)
12 ...   i.set("updated","yes")  #为每个year节点添加属性
13 ...
14 >>> tree.write("xmltest.xml")
15
16 #删除某个节点
17 >>> for i in root.findall(‘stars‘):   #查询所有stars节点并删除
18 ...   root.remove(i)

创建xml文档:

 1 #!/usr/bin/env python
 2 #coding:utf8
 3
 4 import xml.etree.ElementTree as ET
 5
 6 new_xml = ET.Element(‘namelist‘)  #创建根节点
 7 name = ET.SubElement(new_xml,"root",attrib={‘enrolled‘:‘yes‘})   #根节点下创建子节点并设置属性
 8 age = ET.SubElement(name,"head",attrib={"cheched":"no"}) #root节点下创建节点,配置属性
 9 sex = ET.SubElement(name,"sex")  #root下创建节点
10 sex.text = ‘88‘   #设置节点值
11 name2 = ET.SubElement(new_xml,"root",attrib={"enrolled":"no"})
12 age2 = ET.SubElement(name2,‘age2‘)
13 age2.text = ‘99‘
14
15 et = ET.Element(new_xml)   #生成xml文件对象
16 #et.write("test_1.xml",encoding="utf-8",xml_declaration=True)
17 ET.dump(new_xml)   #打印生成格式
18
19 #output:
20 <namelist>
21     <root enrolled="yes">
22         <head cheched="no" />
23         <sex>88</sex>
24     </root>
25     <root enrolled="no">
26         <age2>99</age2>
27     </root>
28 </namelist>

原文地址:https://www.cnblogs.com/itworks/p/9765691.html

时间: 2024-10-02 19:24:26

Python常用模块二的相关文章

python全栈开发【第十篇】Python常用模块二(时间、random、os、sys和序列化)

一.time模块 表示时间的三种方式: 时间戳:数字(计算机能认识的) 时间字符串:t='2012-12-12' 结构化时间:time.struct_time(tm_year=2017, tm_mon=8, tm_mday=8, tm_hour=8, tm_min=4, tm_sec=32, tm_wday=1, tm_yday=220, tm_isdst=0)像这样的就是结构化时间 #time模块的常用方法及三种时间之间的转换 import time # 对象:对象.方法 # --------

python:常用模块二

1,hashlib模块---摘要算法 import hashlib md5 = hashlib.md5() md5.update('how to use md5 in python hashlib?') print md5.hexdigest() 计算结果如下: d26a53750bc40b38b65a520292f69306 用MD5进行加密 如果数据量很大,可以分块多次调用update(),最后计算的结果是一样的: md5 = hashlib.md5() md5.update('how to

python——常用模块

time.asctime(time.localtime(1234324422)) python--常用模块 1 什么是模块: 模块就是py文件 2 import time #导入时间模块 在Python中,通常有这三种方式来表示时间:时间戳.元组(struct_time).格式化的时间字符串: (1)时间戳(timestamp) :通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运行"type(time.time())",返回的是float类型.

常用模块二---time--random--collections--json--pickle--shelve

常用模块二 ================= collections 模块 ================== ========= namedtuple 可以命名的元组 ============from collections import namedtuple Point=namedtuple('Point',['x','y']) p=Point(1,2)circle=namedtuple('Circle',['x','y','r'])c=circle(1,2,1)print(p.x)pr

常用模块二(configparser

阅读目录 常用模块二 hashlib模块 configparse模块 logging模块 常用模块二 返回顶部 hashlib模块 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示). 摘要算法就是通过摘要函数f()对任意长度的数据data计算出固定长度的摘要digest,目的是为了发现原始数据是否被人篡改过. 摘要算法之所以能指出数

python全栈开发【第九篇】Python常用模块一(主要是re正则和collections)

一.认识模块  什么是模块:一个模块就是一个包含了python定义和声明的文件,文件名就是加上.py的后缀,但其实import加载的模块分为四个通用类别 : 1.使用python编写的代码(.py文件) 2.已被编译为共享库二和DLL的C或C++扩展 3.包好一组模块的包 4.使用C编写并连接到python解释器的内置模块  为何要使用莫模块? 如果你想退出python解释器然后重新进入,那么你之前定义的函数或变量都将丢失,因此我们通常将程序写到文件中以便永久保存下来,需要时,就通过python

Python常用模块-随机数模块(random)

Python常用模块-随机数模块(random) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常用方法举例 1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7

Python常用模块-摘要算法(hashlib)

Python常用模块-摘要算法(hashlib) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MD5算法参数详解 1.十六进制md5算法摘要 1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 #@author :yinzhengjie 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%

python 常用模块 time random os模块 sys模块 json &amp; pickle shelve模块 xml模块 configparser hashlib subprocess logging re正则

python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib  subprocess logging re正则 转自老男孩老师Yuan:http://www.cnblogs.com/yuanchenqi/articles/5732581.html 模块&包(* * * * *) 模块(modue)的概念: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,