表示时间的方式分为: html
1时间戳(timestamp)node
2格式化化的时间字符串(format string)python
3结构化时间(struct_time)数组
实例:dom
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
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]))#必须传入一个参数,并且必须是一个能够计算长度,能够取索引的参数
用途:产生消息摘要,用于判断文件是否相同ide
用法:函数
。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位。
实例:spa
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())
返回结果:.net
二进制结果:b" \x90j>N\x82'\xd1\xb2m\x8d\xa0<&\xd06"命令行
十六进制结果:20906a3e4e8227d1b26d8da03c26d036
sys模块是可供访问的解释器使用或维护的变量和与解释器进行交互的函数。负责程序与解释器的交互,提供了一系列的函数和变量,用于操控python运行时的环境。
import sys print(sys.argv)#命令行参数list形式返回,第一个云素是程序自己 print(sys.path)#返回模块的搜索路径,初始化时使用python环境变量的值 print(sys.platform)#返回系统平台名称 print(sys.version)#获取解释程序的版本信息 print(sys.exit(0))#退出程序,正常时退出exit(0)
高级的文件、文件夹、压缩包处理模块
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
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)