第三章 list, dictionary和set的comprehension

第三章 list, dictionary和set的comprehension

(1)os模块可以得到大量的系统信息,这个模块是python自带的,可以在任何时候,任何位置导入。os.path模块包含了用于操纵文件和目录的函数:
1)os.path.join()将多个部分路径构建一个新的路径,它的参数可以有任意数量的参数。
>>> print(os.path.join(‘/usr/local’, ‘apache2’))
/usr/local/apache2
2)不要自己添加多余的斜线连接路径,而是使用os.path.join()让python自己去做这些事。
3)os.path.expanduser()函数返回用户的home目录。
4)os.path.split()可以返回目录名和文件名;os.path.splitxt()函数返回文件名和文件扩展名。

(2)glob模块是标准python库,可以获得目录的内容:
>>>import glob
>>>glob.glob(‘examples/*.xml’)#获得examples目录下的xml文件。

(3)python可以返回文件的元数据并且不用打开文年,只要有文件名就可以:
1)metadata=os.stat(filename)#返回filename的元数据,存在metadata对象里。
2)metadata.st_mtime#文件修改时间,但是以1970年1月1日0点0秒开始,到现在的秒数。但是可以用time模块转换成其它格式。time.localtime(metadata.st_mtime)。
3)在交互式命令行里直接输入metadata会输出所有相关属性。

(4)os.path.realpath(filename)#用于返回filename的绝对路径。

(5)列表推导式(List Comprehension)提供了一种简便的建立列表的方法,只需要在方括号里使用for语句,if语句根据条件须要添加,for之前是用于返回列表的元素,for之后是迭代和筛选条件。

[expr for var in iterable if condition]

例如:
>>>a_list = [1,9,8,4]
>>>[elem * 2 for elem in a_list]
>>>a_list=[other * 2 for other in a_list if other>5]#把a_list中大于5的元素导出,再乘2后,建立一个新列表。中间生成的列表在内存中保存,不会破坏原有的列表。

(6)dictionary Comprehension和List Comprehension一样,只不过用花括号代替方括号。可以通过这个方法来交换字典中的key和value(value也是不可修改的值,如果value是可修改的值,那会出错)

(7)set comprehension和上面两种一样。

发表回复