内置模块

TIME和DATETIME模块

表示时间的方式分为:          

1时间戳(timestamp)

2格式化化的时间字符串(format string)

3结构化时间(struct_time)

实例:

import datetime
import time

print(datetime.datetime.now())
#2018-06-05 19:01:06.993322

print(datetime.date.fromtimestamp(time.time()))
#2018-06-05

print(datetime.datetime.now()+datetime.timedelta(3))
#2018-06-08 19:03:53.716729

print(datetime.datetime.now()+datetime.timedelta(-3))
#2018-06-02 19:04:49.441533

print(datetime.datetime.now()+datetime.timedelta(hours=3))
#2018-06-05 22:05:59.804380

print(datetime.datetime.now()+datetime.timedelta(hours=-3))
#2018-06-05 16:07:10.981068

time=datetime.datetime.now()
print(time.replace(day=7,hour=22))
#2018-06-07 22:32:30.268675

Random模块

import random

print(random.random())
#0.7440638054751231

print(random.randint(1,3))#闭区间,必须传入两个参数
#2

print(random.randrange(5))#前闭后开区间,至少传一个整数
#1

print(random.choice(['a','b',1,2,3]))#必须传一个数组,将在数组里任意取一个值
print(random.sample([1,2,3],2))#必须传两个参数一个是供选择的数组。一个是整数,代表取几个数
#['b']

print(random.uniform(3,5))#必须传两个数,结果是开区间的一个小数

print(random.shuffle([1,2,2,3,4]))#必须传入一个参数,而且必须是一个可以计算长度,可以取索引的参数

Hashlib和Md5模块

用途:产生消息摘要,用于判断文件是否相同

用法:

。md5.new([arg])//返回一个md5对象,如果有参数则相当于调用了update(arg)

。md5.md5(s)//返回字符串s的md5

。md5.update(arg)//用string参数更新md5对象。

。md5.digiest()返回16字节的摘要,由传给update的string生成,摘要没有ascii码字符。

。hexdigest()//返回16字节的摘要,由传给update的string生成,摘要进制的形式返回摘要,32位。

实例:

import hashlib

m = hashlib.md5()
m.update("Nobody inspects".encode('utf-8'))
m.update(" the spammish repetition xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx".encode('utf-8'))
print(m.digest())
print(m.hexdigest())

返回结果:

二进制结果:b" \x90j>N\x82'\xd1\xb2m\x8d\xa0<&\xd06"

十六进制结果:20906a3e4e8227d1b26d8da03c26d036

sys模块

sys模块是可供访问的解释器使用或维护的变量和与解释器进行交互的函数。负责程序与解释器的交互,提供了一系列的函数和变量,用于操控python运行时的环境。

import sys

print(sys.argv)#命令行参数list形式返回,第一个云素是程序本身

print(sys.path)#返回模块的搜索路径,初始化时使用python环境变量的值

print(sys.platform)#返回系统平台名称

print(sys.version)#获取解释程序的版本信息

print(sys.exit(0))#退出程序,正常时退出exit(0)

 

Shutil模块

高级的文件、文件夹、压缩包处理模块

import shutil

#拷贝文件
shutil.copyfileobj(open(r'02.批量操作','rb'),open('new.html','wb'))

#目标文件无需存在
shutil.copyfile(r'01.监听input输入','f2.html')

#仅仅拷贝文件权限,其他均不变。目标文件必须在
shutil.copymode(r'02.批量操作','f1.html')

#仅仅拷贝文件状态。文件必须在
shutil.copystat(r'02.批量操作','f1.html')

#仅仅拷贝文件和权限
shutil.copy(r'02.批量操作','f1.html')

#拷贝文件和状态信息
shutil.copy2(r'02.批量操作','f1.html')

#递归拷贝文件夹。目标目录不能存在,注意必须对目标目录的父级目录有可写权限
shutil.copytree(r'D:\pycharm\pre_farmer\runoob',r'D:\pycharm\pre_farmer\a',ignore=shutil.ignore_patterns('*.py','practice*'))

#创建压缩包并返回文件路径
shutil.make_archive('02','gztar',root_dir=r'D:\pycharm\pre_farmer\runoob')

#递归地移动文件,类似mv命令
shutil.move(r'D:\pycharm\pre_farmer\今日作业.html',r'D:\pycharm\pre_farmer\runoob\a.html')

#递归地删除文件夹下的文件
shutil.rmtree(r'./a')

#创建压缩包并返回文件路径
 shutil.make_archive('02','gztar',root_dir=r'D:\pycharm\pre_farmer\runoob')

创建压缩包并返回文件路径,例如:zip、tar

创建压缩包并返回文件路径,例如:zip、tar

base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,

如 data_bak                       =>保存至当前路径

如:/tmp/data_bak =>保存至/tmp/

format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”

root_dir:      要压缩的文件夹路径(默认当前目录)

owner: 用户,默认当前用户

group: 组,默认当前组

logger: 用于记录日志,通常是logging.Logger对象

 

tar压缩格式

import tarfile

#压缩
t=tarfile.open('今日作业.tar','w')
t.add('../今日作业.html',arcname='a.bak')
t.close()

#解压缩
t=tarfile.open('今日作业.tar','r')
t.extractall('./')#解压缩到当前目录
t.close()

zip压缩格式

import zipfile

# 压缩
z = zipfile.ZipFile('laxi.zip', 'w')
z.write('a.log')
z.write('data.data')
z.close()

# 解压
z = zipfile.ZipFile('laxi.zip', 'r')
z.extractall(path='.')
z.close()
#解压文件为中文的文件名乱码问题,参考:https://blog.csdn.net/tian544556/article/details/78635840

XML模块

 1 import xml.etree.ElementTree as ET
 2 
 3  
 4 
 5 tree=ET.parse('a.xml')#解析文件
 6 
 7 root=tree.getroot()#查树根
 8 
 9  
10 
11 print(root.tag)#获取根节点
12 
13 #遍历xml文档
14 
15 for child in root:
16 
17     print('==>',child.tag,child.attrib,child.attrib['name'])
18 
19     for i in child:
20 
21         print(i.tag,i.attrib,i.text)
22 
23 #遍历gdppc节点
24 
25 for node in root.iter('gdppc'):#迭代查找:会在整个树中查找,并且是查找所有匹配的
26 
27     print(node.tag,node.text)
28 
29  
30 
31 #修改节点
32 
33 for node in root.iter('year'):
34 
35     new_year=int(node.text)+3
36 
37     node.set('updated','yes')
38 
39     node.set('version','1.0')
40 
41 tree.write('a.xml')
42 
43  
44 
45 #删除节点
46 
47 for country in root.findall('country'):
48 
49     rank=int(country.find('rank').text)
50 
51     if rank>50:
52 
53         root.remove(country)
54 
55 tree.write('a.xml')
56 
57  
58 
59 #创建xml文档
60 
61 new_xml=ET.Element('namelist')
62 
63 name=ET.SubElement(new_xml,'name',attrib={'enrolled':'yes'})
64 
65 age=ET.SubElement(name,'age',attrib={'checked':'no'})
66 
67 gender=ET.SubElement(name,'gender')
68 
69 gender.text='33'
70 
71 name2=ET.SubElement(new_xml,'name',attrib={'enrolled':'no'})
72 
73 age=ET.SubElement(name2,'age')
74 
75 age.text='19'
76 
77 et=ET.ElementTree(new_xml)
78 
79 et.write('a.xml',encoding='utf-8',xml_declaration=True)
80 
81 ET.dump(new_xml)
View Code

 

posted @ 2018-06-05 20:09  桥前石头  阅读(97)  评论(0编辑  收藏  举报