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