Python之路——常用模块

1、时间模块、日期模块

时间三种表示方式:

 

  • 时间戳:1970年1月1日之后的总秒数,例如:1531572715.7610888
  • 格式化时间:例如:18-07-14 21:20:28
  • 结构化时间:以元组的形式表示,例如:time.struct_time(tm_year=2018, tm_mon=7, tm_mday=14, tm_hour=20, tm_min=52, tm_sec=22, tm_wday=5, tm_yday=195, tm_isdst=0)。各元素含义如下:

 

三种时间之间的转换:

 

import time , datetime

#-------get time--------
print(time.time()) #返回当前时间戳,例如:1531575718.9018586
print(time.ctime()) #返回当前格式化时间,例如:Sat Jul 14 21:41:58 2018
print(datetime.datetime.now())  #返回当前时间 ,例如:2018-07-14 22:07:40.132011
print(time.localtime())
#返回当前结构化时间,例如:time.struct_time(tm_year=2018, tm_mon=7, tm_mday=14, tm_hour=21, tm_min=41, tm_sec=58, tm_wday=5, tm_yday=195, tm_isdst=0)
print(time.gmtime())
#返回当前标准结构化时间,例如:time.struct_time(tm_year=2018, tm_mon=7, tm_mday=14, tm_hour=13, tm_min=41, tm_sec=58, tm_wday=5, tm_yday=195, tm_isdst=0)
print(time.altzone) #以时间戳的格式返回当前时间与标准时间的差,例如:-32400
#-------time cycle--------
print(time.gmtime(time.time()))  #时间戳转换为结构化时间
print(time.localtime(time.time()))  #时间戳转换为结构化时间,本地时间
print(time.mktime(time.gmtime()))  #结构化时间转换为时间戳
print(time.strftime("%y-%m-%d %H:%M:%S",time.localtime()))  #结构化时间转换为格式化时间,时分秒大写
print(time.strptime(time.ctime()))  #格式化时间转换为结构化时间
print(time.ctime(time.time()))   #时间戳转换为格式化时间
print(time.asctime(time.localtime()))  #结构化时间转换为格式化时间
print(datetime.date.fromtimestamp(time.time()))   #时间戳转换为日期格式
t = datetime.datetime.now()+datetime.timedelta(days=5)
print(datetime.datetime.now(),t)
# datetime.timedalta() 表示时间间隔,即两个时间点之间的长度;timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])

2、random模块

import random

print(random.random())  #返回0-1之间的随机浮点数
print(random.randint(1,10))  #返回1-10之间的随机整数
print(random.randrange(1,10))  #返回1-10之间的随机整数

3、sys模块

import sys

print(sys.argv)   #命令行参数List,第一个元素是程序本身路径
print(sys.path)     #返回搜索路径,即环境变量路径
print(sys.version) #返回版本信息
print(sys.platform) #返回操作平台名称
info = sys.stdin.readline()  #获取输入信息
print(sys.stdout.write(info))  #向终端输出

4、os模块

import os

print(os.getcwd())  #返回当前目录路径
print(os.curdir)    #返回当前目录: .
print(os.pardir)    #返回当前目录的父目录: ..
os.makedirs("1/2")  #创建多级目录
os.chdir("1/2")   #改变路径,相当于shell下cd
os.removedirs("1/2")  #删除指定目录,若为空,则可循环删除多级目录
os.mkdir("3")   #创建指定目录
os.rmdir("3")   #删除指定目录
print(os.listdir()) #以列表形式打印当前目录的所有文件
os.remove("xxx")   #删除指定文件
os.rename("时间格式转换1.png","时间格式转换.png")  #重命名文件
print(os.stat("时间格式转换.png")) #获取指定文件信息
print(os.sep)   #输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
print(os.linesep)   #输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
print(os.name)  #输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
print(os.pathsep)   #输出用于分割文件路径的字符串
os.system("dir")    #运行shell命令,返回运行结果代码:0,1,2;通过设置pycharm编码方式为GBK可解决中文乱码问题
print(os.popen("dir").read())   #运行shell命令,返回运行内容
print(os.environ)   #获取环境变量
os.path.abspath("path")   #返回path规范化的绝对路径
os.path.split("path")     #将path分割成目录和文件名二元组返回
os.path.dirname("path")     #返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename("path")    #返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
os.path.exists("path")      #如果path存在,返回True;如果path不存在,返回False
os.path.isabs("path")       #如果path是绝对路径,返回True
os.path.isfile("path")      #如果path是一个存在的文件,返回True。否则返回False
os.path.isdir("path")       #如果path是一个存在的目录,则返回True。否则返回False
os.path.getatime("path")    #返回path所指向的文件或者目录的最后存取时间
os.path.getmtime("path")    #返回path所指向的文件或者目录的最后修改时间

5、shutil 模块  

import shutil

shutil.copyfileobj("file_source","file_distination",length=1024)    #将文件内容拷贝到另一个文件中,长度省略则全部拷贝
shutil.copyfile("file_source","file_distination")   #将文件内容拷贝到另一个文件中
shutil.copymode("f_source","f_distination") #仅拷贝权限。内容、组、用户均不变
shutil.copystat("f_source","f_distination") #拷贝状态的信息,包括:mode bits, atime, mtime, flags
shutil.copy("f_source","f_distination") #拷贝文件和权限
shutil.copy2("f_source","f_distination")  #拷贝文件和状态信息
shutil.copytree("f_source","f_distination",ignore=shutil.ignore_patterns("*.tar"))
#递归的去拷贝文件,ignore=shutil.ignore_patterns("*.tar"):剔除指定类型的文件
shutil.rmtree("path")   #递归删除文件
shutil.move("SourcePath","DistinationPath") #递归移动文件
shutil.make_archive("CompressPath","zip","RootFile")
#压缩文件或路径,压缩类型:zip,tar,bztar,gztar; 要压缩的文件

shtil.make_archive 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的

import zipfile,tarfile

z = zipfile.ZipFile('int.zip', 'w')  #压缩
z.write('1.txt')
z.write('2.txt')
z.close()
z = zipfile.ZipFile('int.zip', 'r')    #解压
z.extractall()
z.close()

tar = tarfile.open('data.tar','w')  #打包
tar.add('path/1.zip', arcname='1.zip')
tar.close()
tar = tarfile.open('data.tar','r')  #解压
tar.extractall()  # 可设置解压地址
tar.close()

6、序列化模块:json,pickle

json:用于字符串 和 python数据类型间进行转换

pickle:用于python特有的类型 和 python的数据类型间进行转换

import json,pickle

data = ["iiiad","pathon","apples","你好"]
f_json = json.dumps(data)   #将字符串数据转换为JSON类型
print(f_json)
print(json.loads(f_json))   #读取JSON类型数据
with open("data.json","w+",encoding="utf-8") as f1: #将字符串数据转换为JSON类型,并写入JSON文件
    json.dump(data,f1)
f2 = open("data.json","r+",encoding="utf-8")    #从JSON文件中获取数据
print(json.load(f2))
f2.close()
f1.close()

f_pickle = pickle.dumps(data)   #将字符串数据转换为PICKLE类型
print(f_pickle)
print(pickle.loads(f_pickle))
with open("data.pk","wb+") as fp1:  #pickle以二进制存储,对文件操作须以二进制进行,否则报错
    pickle.dump(data,fp1)
fp2 = open("data.pk","rb+")
print(pickle.load(fp2))
fp1.close()
fp2.close()

7、shelve 模块

shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式

import shelve

data_sv = shelve.open("data.shelve")    #打开一个shelve文件
data_sv["name"] = "phone"   #添加字典元素
data_sv["o1"] = "apple"
data_sv["heght"] = "30kg"
print(data_sv["o1"])    #引用shelve
for each in data_sv.keys():     #遍历shelve
    print(each,data_sv[each])
data_sv.close()

8、XML 模块

一个XML文件通常包含:版本说明、节点(标签)、节点属性、节点内容等。且有且只有一个根节点。

import xml.etree.ElementTree as ET

tree = ET.parse("ENBCFG.XML")  #解析XML文件
root = tree.getroot()       #获取根节点
print(root.tag)         #打印根节点的标签和属性
print(root.attrib)
def traverse(element):      #遍历XML文件
    for each in element:
        print(each.tag,":",each.text)
        if ET.iselement(each):
            traverse(each)
traverse(root)
for i in root.iter("LocalCellId"):  #只遍历 LocalCellId 节点
    print(i.tag, ":", i.text)
print(root[2][0][0].text)   #通过下标访问
print(tree.findall("class"))
print(tree.findtext("HERTBBUV300R006C10SPC210"))
new_element = ET.SubElement(root,"myname",{"color":"red",})  #在最后添加子节点
root.append(new_element)    #在最后添加子节点

9、Hashlib

import hashlib

obj = hashlib.sha256()  #sha1(), sha224(), sha256(), sha384(), sha512(), blake2b(), blake2s() and md5()  in version 3.6
obj_new = hashlib.sha256()
obj.update(b"asda") #二进制
obj.update("iamoknin你好".encode())
obj_new.update("asdaiamoknin你好".encode())
print(obj.digest())
print(obj.hexdigest())
print(obj_new.hexdigest())
#obj.hexdigest() = obj_new.hexdigest()

 

 

参考文章:

http://www.cnblogs.com/wupeiqi/articles/4963027.html

http://www.cnblogs.com/alex3714/articles/5161349.html

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值