1、glob模块
glob模块可以说是最简单的一类模块, 它的内容非常少。使用者可以运用它来查找符合条件的文件路径名, 其操作方式跟使用命令行进行文件搜索大致相同。
在查找文件时,只需要用到三种匹配符, 它们分别是以双星号表示的模式、以问号表示的模式以及以波浪线表示的模式。具体而言, 以双星号为核心的规则能匹配到零个或者多个字符;而采用问号的方式则对应单个字符。
使用双引号来匹配那些处于指定范围里面的字符, 比如说像数字一类的东西。
glob.glob
它会返回一个包含了所有能够匹配上的文件路径的列表, 该函数本身仅仅存在一个参数, 这个参数的作用是去定义关于文件路径应该如何进行匹配的具体规则, 在这个位置上面, 既可以选择采用绝对路径的形式, 同时也可以去选择采用相对路径的形式, 以下是具体使用glob.glob这一项功能的示例:
请提供需要改写的句子。

结果:

例子2

结果:

如果你想要拿到每一个文件的那种完整的, 从根目录开始算起的路径的话, 你可以在那个函数把东西还回来的时候, 去调一下那个括号里面有内容的办法来解决这个问题:

结果:

glob.glob
去获取一个可以进行迭代操作的对象, 借助于这个对象, 就能逐个地去拿到那些符合匹配条件的文件路径名字。
和glob.glob()这个函数来做一个对比的话, 区别在于: glob.glob是一次性地把所有的已经匹配上的路径全部都拿回来的, 但是glob.iglob呢, 它是每次只获取一个已经匹配好的路径的。
这种情况在某些方面是比较相似的, 具体来说是和在.NET技术栈里面用于访问数据库的操作模式类似。

结果:

2、生成唯一的标识。
在少数的时候, 你必须要生成一个独一的字符序列。我发觉不少朋友运用md5()这个功能来达成这样的目标, 然而它真的并不是为了这般用途而设计的。事实上, 存在一个叫做uuid()的功能, 它是专门为了这种用途而存在的。
3、将数据转换成json这种格式, 以便进行序列化。

4、把那些字符的数量给压缩掉。
当提起压缩这个概念的时候, 大家普遍脑海中浮现出的都是诸如文件之类的东西。典型的例子就是那些采用ZIP格式结构的压缩包数据。而在当前讨论的情形之下, 系统允许对非常长的字符序列进行压缩操作, 这一过程完全不涉及任何传统的档案文件格式。
import zlib
string = """ Lorem ipsum dolor sit amet, consectetur
adipiscing elit. Nunc ut elit id mi ultricies
adipiscing. Nulla facilisi. Praesent pulvinar,
sapien vel feugiat vestibulum, nulla dui pretium orci,
non ultricies elit lacus quis ante. Lorem ipsum dolor
sit amet, consectetur adipiscing elit. Aliquam
pretium ullamcorper urna quis iaculis. Etiam ac massa
sed turpis tempor luctus. Curabitur sed nibh eu elit
mollis congue. Praesent ipsum diam, consectetur vitae
ornare a, aliquam a nunc. In id magna pellentesque
tellus posuere adipiscing. Sed non mi metus, at lacinia
augue. Sed magna nisi, ornare in mollis in, mollis
sed nunc. Etiam at justo in leo congue mollis.
Nullam in neque eget metus hendrerit scelerisque
eu non enim. Ut malesuada lacus eu nulla bibendum
id euismod urna sodales. """
print "Original Size: {0}".format(len(string))
compressed = zlib.compress(string)
print "Compressed Size: {0}".format(len(compressed))
decompressed = zlib.decompress(compressed)
print "Decompressed Size: {0}".format(len(decompressed))
5、
其中的字典是无序的, 因为它是按照hash来进行存储的, 但是在当中有个模块, 这个模块的名称是英文, 代表着收集、集合的意思, 里面自带了一个子类, 这个子类实现了对字典对象中元素的排序。请看下面的实例:
普通的字典虽然排列的顺序是不一样的, 但是里面的内容是相同的, 它们所构成的仍然是一个字典。
dict1= {'z':3 ,'y':2, 'x':1}
dict2= {'z':3 , 'x':1,'y':2}
print dict1 == dict2
print dict1
print dict2
输出:
dict1 = OrderedDict()
dict1['z'] = 3
dict1['y'] = 2
dict1['x'] = 1
dict2 = OrderedDict()
dict2['z'] = 3
dict2['x'] = 1
dict2['y'] = 2
print dict1 == dict2
print dict1
print dict2
输出:
再看几个例子
dict1 = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2}
kd = OrderedDict(sorted(dict1.items(), key=lambda t: t[0]))
print kd
#按照value排序
vd = OrderedDict(sorted(dict1.items(),key=lambda t:t[1]))
print vd
#输出
# OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)])
# OrderedDict([('pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)])
6、函数
其中包含一个用于排序的内置函数, 它针对列表执行排序操作, 关于此函数的更多详情可以参阅官方网站文档部分所提供的说明信息, 其具体的函数原型定义表述如下:
()
参数解释:
1、您需要明确指定那个需要进行排序工作的列表, 这一事项无需再多作任何额外的说明, 因为这是不言自明的规则之一。
2、cmp这个词是一个函数符号, 它是用来在指定执行排序动作的时候, 提供进行比较用的那个函数逻辑的存在形态的, 用户这边是可以自己去定义一个具体的函数名放进去, 或者直接用一个现成的函数名称来替代它的, 比如:
为了针对那些包含类对象的列表, 其中的每一个成员都具备三个数据域的情况, 在进行比较排序操作的过程中, 允许使用者自主定义用于比较的函数;例如在当前场景下, 如果需求是通过对比第三个数据成员来实现对整个列表的排序处理, 那么代码可以依照如下方式进行书写:
=
('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)
(, 键=: )。
3、那个叫作为关键参数, 它实际上是一个函数。它的用途是指明应该选取待排序元素里面的哪一个部分来执行排序操作。接下来我们使用前面提到的示例来进行解释, 具体的代码呈现如下:
(, key= : )
这个由key参数所指定的函数, 它的作用就是去取出每一个元素里面的第三个域(也就是那个空格所占的位置), 所以说在这个排序的过程当中了, 它是会基于所有的元素里面的第三个域来进行排序操作的。
在拥有了上述函数之后, 也可以使用这个函数来实现相应的功能, 假设当前需要通过第三个域来进行排序操作。具体的做法可以表述为以下几种方式:
(, key=.(2))
函数也是可以开展那种包含多个层级的排序活动的, 比如说, 如果你需要基于第二个字段以及第三个字段来实施排列操作, 那么具体的代码写法可以这样来处理。
这个表达式的意思是, 首先对集合中的元素的第二个组成部分进行排序操作, 紧接着再根据第三部分组成的内容进行排序。
4、那个叫做参数, 是咱们不用多说的事儿, 它是一个布尔值变量, 是用来表示排列顺序是按升序还是按降序来的, 默认值是假, 这里表示的是升序, 要是把这个定义为真, 那就按照降排的方式来了。
7、分片
list1 = "0123456789"
print("打印第0个元素:" ,list1[0])
print("负数表示倒数第N个元素,-1表示倒数第一个元素:" ,list1[-1])
print("分片操作,list1[start:end], start会包含在结果中而end却不会:" ,list1[1:5])
print("冒号后不写表示从start到末尾:" ,list1[5:])
print("表示从倒数第二个元素一直到末尾:" ,list1[-2:])
print("表示从倒数第六个元素到倒数第二个元素,但不包含倒数第二个元素:" ,list1[-6:-2])
print("start不写表示从开头开始到end, 但不包含end:" ,list1[:4])
print("start和end都不写表示整个列表:" ,list1[:])
print("支持步长,步长为正数表示从start到end每隔N个数打印一个:" ,list1[::2])
print("步长为负数表示从end到start每隔N个数打印一个:" ,list1[::-2])
print("若end比start小,则步长必须为负数否则会出错:" ,list1[-1:-6:-1])
print("两个序列相加会合并:" ,[1, 2, 3] + [4, 5, 6])
print("序列乘法相当于3个序列相加:" , [1, 2, 3] * 3)
对元素进行修改, 或者执行删除操作, 以及实施分片形式的元素修改与删除。
list2 = [0,1,2,3,4,5,6,7,8,9]
list2[1] = 'b'
print(list2) #[0'b'23456789]
del list2[1]
print(list2) #[023456789]
del list2[5:]
print(list2)
list2[5:] = [6,7,8,9]
print(list2)
550



被折叠的 条评论
为什么被折叠?



