python 六 ——shutil模块、pickle模块、time模块、set 集合

一、常用知识
参考文章,介绍模块:https://www.cnblogs.com/sui776265233/category/1239819.html
练习:https://www.iplaypy.com/python-100/
二、shutil模块
os模块提供了对目录或者文件的新建/删除/查看文件属性,还提供了对文件以及目录的路径操作。shutil是对os 的文件操作的补充。–移动 复制 打包 压缩 解压。
2.1 功能
1) shutil.copyfileobj(fsrc, fdst[, length=16*1024]) #copy文件内容到另一个文件,可以copy指定大小的内容,需要先打开文件。
2) shutil.copyfile(src,dst) #copy文件内容,copyfile调用了copyfileobj。
3) shutil.copymode(src,dst) #仅copy权限,不更改文件内容,组和用户。
4) shutil.copystat(src,dst) #复制所有的状态信息,包括权限,组,用户,时间等。
5) shutil.copy(src,dst) #复制文件的内容以及权限,先copyfile后copymode
6) shutil.copy2(src,dst) #复制文件的内容以及文件的所有状态信息。先copyfile后copystat
7) shutil.copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2,ignore_dangling_symlinks=False) #递归的复制文件内容及状态信息
8) shutil.rmtree(path, ignore_errors=False, οnerrοr=None) #递归地删除文件
9) shutil.move(src, dst) #递归的移动文件
10) shutil.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"or “gztar”;
root_dir : 将哪个目录或者文件打包(也就是源文件)
11)shutil.chown(’/tmp/mima2.txt’, user=‘zhangsan’, group=‘zhangsan’) 修改文件的用户名跟用户组

三 、pickle模块
把数据写入文件时,常规的文件方法只能把字符串对象写入,其他数据需要先转换成字符串再写入文件。
使用pickle模块,可以在一个文件中存储任何python对象,之后又可以把它完整无缺取出来。
特点
1、只能在python中使用,只支持python的基本数据类型。
2、可以处理复杂的序列化语法。(例如自定义的类的方法,游戏的存档等)
3、序列化的时候,只是序列化了整个序列对象,而不是内存地址。
3.1 Pickle模块中最常用的函数为:
1)pickle.dump(obj, file, [,protocol]) 将obj对象序列化存入已经打开的file中。
obj:想要序列化的obj对象。
file:文件名称。
protocol:序列化使用的协议。默认省略时为0。如果为负值或HIGHEST_PROTOCOL,则使用最高的协议版本。
2)pickle.load(file)
函数的功能:将file中的对象序列化读出。
file:文件名称。
3)pickle.dumps(obj[, protocol])
函数的功能:将obj对象序列化为string形式,而不是存入文件中。obj:想要序列化的obj对象。
4)pickle.loads(string)
函数的功能:从string中读出序列化前的obj对象。string:文件名称。


案例:
import pickle
datalist=[[1,1,‘yes’],
… [1,1,‘yes’],
… [1,0,‘no’],
… [0,1,‘no’],
… [0,1,‘no’]]

datalist
[[1, 1, ‘yes’], [1, 1, ‘yes’], [1, 0, ‘no’], [0, 1, ‘no’], [0, 1, ‘no’]]
dataDic={0:[1,2,3,4],1:(‘1’,‘b’),2:{‘c’:‘yes’,‘d’:‘no’}}
dataDic
{0: [1, 2, 3, 4], 1: (‘1’, ‘b’), 2: {‘c’: ‘yes’, ‘d’: ‘no’}}
fw = open(‘dataFile.txt’,‘wb’)
pickle.dump(datalist,fw,-1)
pickle.dump(dataDic,fw)
fw.close()
fr =open(‘dataFile.txt’,‘rb’)
data1=pickle.load(fr)
print(data1)
data2=pickle.load(fr)
data2
{0: [1, 2, 3, 4], 1: (‘1’, ‘b’), 2: {‘c’: ‘yes’, ‘d’: ‘no’}}
fr.close()
p = pickle.dumps(datalist)
print(pickle.loads§)
[[1, 1, ‘yes’], [1, 1, ‘yes’], [1, 0, ‘no’], [0, 1, ‘no’], [0, 1, ‘no’]]
p=pickle.dumps(dataDic)
print(pickle.loads§)
{0: [1, 2, 3, 4], 1: (‘1’, ‘b’), 2: {‘c’: ‘yes’, ‘d’: ‘no’}}


四、 string模块
str.capitalize() 把字符串的第一个字符大写
str.center(width) 返回一个原字符串居中,并使用空格填充到width长度的新字符串
str.ljust(width) 返回一个原字符串左对齐,用空格填充到指定长度的新字符串
str.rjust(width) 返回一个原字符串右对齐,用空格填充到指定长度的新字符串
str.zfill(width) 返回字符串右对齐,前面用0填充到指定长度的新字符串
str.count(str,[beg,len]) 返回子字符串在原字符串出现次数,beg,len是范围
str.decode(encodeing[,replace]) 解码string,出错引发ValueError异常
str.encode(encodeing[,replace]) 解码string
str.endswith(substr[,beg,end]) 字符串是否以substr结束,beg,end是范围
str.startswith(substr[,beg,end]) 字符串是否以substr开头,beg,end是范围
str.expandtabs(tabsize = 8) 把字符串的tab转为空格,默认为8个
str.find(str,[stat,end]) 查找子字符串在字符串第一次出现的位置,否则返回-1
str.index(str,[beg,end]) 查找子字符串在指定字符中的位置,不存在报异常
str.isalnum() 检查字符串是否以字母和数字组成,是返回true否则False
str.isalpha() 检查字符串是否以纯字母组成,是返回true,否则false
str.isdecimal() 检查字符串是否以纯十进制数字组成,返回布尔值
str.isdigit() 检查字符串是否以纯数字组成,返回布尔值
str.islower() 检查字符串是否全是小写,返回布尔值
str.isupper() 检查字符串是否全是大写,返回布尔值
str.isnumeric() 检查字符串是否只包含数字字符,返回布尔值
str.isspace() 如果str中只包含空格,则返回true,否则FALSE
str.title() 返回标题化的字符串(所有单词首字母大写,其余小写)
str.istitle() 如果字符串是标题化的(参见title())则返回true,否则false
str.join(seq) 以str作为连接符,将一个序列中的元素连接成字符串
str.split(str=‘‘,num) 以str作为分隔符,将一个字符串分隔成一个序列,num是被分隔的字符串
str.splitlines(num) 以行分隔,返回各行内容作为元素的列表
str.lower() 将大写转为小写
str.upper() 转换字符串的小写为大写
str.swapcase() 翻换字符串的大小写
str.lstrip() 去掉字符左边的空格和回车换行符
str.rstrip() 去掉字符右边的空格和回车换行符
str.strip() 去掉字符两边的空格和回车换行符
str.partition(substr) 从substr出现的第一个位置起,将str分割成一个3元组。
str.replace(str1,str2,num) 查找str1替换成str2,num是替换次数
str.rfind(str[,beg,end]) 从右边开始查询子字符串
str.rindex(str,[beg,end]) 从右边开始查找子字符串位置
str.rpartition(str) 类似partition函数,不过从右边开始查找
str.translate(str,del=‘‘) 按str给出的表转换string的字符,del是要过虑的字符


五、Time 模块


六、datetime 模块
datetime.date.today() 本地日期对象,(用str函数可得到它的字面表示(2014-03-24))
datetime.date.isoformat(obj) 当前[年-月-日]字符串表示(2014-03-24)
datetime.date.fromtimestamp() 返回一个日期对象,参数是时间戳,返回 [年-月-日]
datetime.date.weekday(obj) 返回一个日期对象的星期数,周一是0
datetime.date.isoweekday(obj) 返回一个日期对象的星期数,周一是1
datetime.date.isocalendar(obj) 把日期对象返回一个带有年月日的元组datetime对象:
datetime.datetime.today() 返回一个包含本地时间(含微秒数)的datetime对象 2014-03-24 23:31:50.419000
datetime.datetime.now([tz]) 返回指定时区的datetime对象 2014-03-24 23:31:50.419000
datetime.datetime.utcnow() 返回一个零时区的datetime对象
datetime.fromtimestamp(timestamp[,tz]) 按时间戳返回一个datetime对象,可指定时区,可用于strftime转换为日期表示 datetime.utcfromtimestamp(timestamp) 按时间戳返回一个UTC-datetime对象
datetime.datetime.strptime(‘2014-03-16 12:21:21‘,”%Y-%m-%d %H:%M:%S”) 将字符串转为datetime对象datetime.datetime.strftime(datetime.datetime.now(), ‘%Y%m%d %H%M%S‘) 将datetime对象转换为str表示形式datetime.date.today().timetuple() 转换为时间戳datetime元组对象,可用于转换时间戳datetime.datetime.now().timetuple()


七、set 集合
集合是一个无序的,不重复的数据组合,集合中的元素是不可变数据类型,集合中的元素不能通过切片工具访问。
它的主要作用如下:去重,把一个列表变成集合,就自动去重了;
关系测试,测试两组数据之前的交集、差集、并集等关系。
set.add() 为集合添加元素
set.clear() 移除集合中的所有元素
set.copy() 拷贝一个集合
set1.difference(set2) 返回一个新集合,该集合是set1的元素,但不是set2的元素
set1.difference_update(set2) set1中属于set1但不包含在set2中的元素
set.discard() 删除集合中指定的元素
set1.intersection(set2)
返回集合set1和set2的交集
set1.intersection_update(set2)
set1中属于set1和set2的元素
set1.isdisjoint(set2)
判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False
set1.issubset(set2)
判断指定集合set1是否为集合set2的子集
set1.issuperset(set2)
判断集合set2是否为集合set1的子集
set.pop()
随机移除元素
set.remove()
移除指定元素
set1.symmetric_difference(set2)
返回一个新集合,该集合是set1和set2的元素,但不是两者共有的元素
set1.symmetric_difference_update(set2)
set1中元素是set1和set2的元素,但不是两者共有的元素
set1.union(set2)
返回两个集合的并集
set.update()
给集合添加元素

上一篇:Java中Set的数据结构及基本功能使用


下一篇:Linux/Centos 正则表达式