整个代码由python写成,正好再深入学习下一些不太熟悉的用法
文件similarity_matrix_generator应该是用来生成相似性的矩阵,从这个文件看起,
源代码:https://github.com/aghagol/loop-detection
第四行代码:
from myconf import *
从这里来回顾下python中的import 使用,
import和from...import...的区别:
import 模块:导入一个模块;
注:相当于导入的是一个文件夹,是个相对路径。使用某个函数的时候还是需要在函数前加上这个模块的名称如:
A.xx()
from A import XX:导入了一个模块中的一个函数;
注:相当于导入的是一个文件夹中的一个文件,是个绝对路径,从A模块中导入XX函数
使用这个函数时不需要加上这个模块名称,可以直接使用:
xx()
关于from A import *:
从 A中导入其中所有的函数,相当于导入一个文件夹下面的所有文件,直接使用函数名就行了
第八行代码:
images = [f for f in os.listdir(campath) if f.endswith('.png')]
关于os模块的一些使用可以参考
http://wiki.jikexueyuan.com/project/explore-python/File-Directory/os.html
讲解很详细
注意os.walk的用法(这里可以使用这个方法来代替代码中的遍历方法多一种思路):
os.walk 是遍历目录常用的模块,它返回一个包含 3 个元素的元祖:(dirpath, dirnames, filenames)。dirpath 是以 string 字符串形式返回该目录下所有的绝对路径;dirnames 是以列表 list 形式返回每一个绝对路径下的文件夹名字;filesnames 是以列表 list 形式返回该路径下所有文件名字。
for root, dirs, files in os.walk('/Users/ethan/coding'):
print root #dirpath 返回所有绝对路径包括文件夹里面的文件
print dirs#dirnames 返回每一个绝对路径下的文件夹名
print files#返回所有文件名字,只是文件,不是文件夹
os.listdir(path)
的用法:
输出path下面的所有文件和目录名称
返回的是一个list
例子:
import os
path = '/home/python/Desktop/'
for i in os.listdir(path):
print(i)
f.endswith(.png)
的用法:
比较好理解,以.png结尾的文件
但其实也可以用在字符串中,特别的可以加入参数,指定字符串中某一段是否以某一个指定结尾:
str = "this is string example....wow!!!";
suffix = "wow!!!";
print str.endswith(suffix);
print str.endswith(suffix,20);
suffix = "is";
print str.endswith(suffix, 2, 4);
print str.endswith(suffix, 2, 6);
f for f in os.listdir(campath)
的用法:
一个高阶的python用法——链表推导式,可以快速构建链表:
[表达式 for 变量 in 列表 ]
OR
[表达式 for 变量 in 列表 if 条件]
这里可以顺便提一下
map()函数:
map(function, iterable, ...)
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
匿名函数lambda:
匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果:
>>> list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
[1, 4, 9, 16, 25, 36, 49, 64, 81]
用匿名函数有个好处,因为函数没有名字,不必担心函数名冲突。此外,匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数:
>>> f = lambda x: x * x
>>> f
<function <lambda> at 0x101c6ef28>
>>> f(5)
25
列表sort()函数:
list.sort(cmp=None, key=None, reverse=False)
cmp -- 可选参数, 如果指定了该参数会使用该参数的方法进行排序。
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。
网友评论