python怎样遍历.py的内容?

Python08

python怎样遍历.py的内容?,第1张

列表的遍历方法一:通过for循环li = [i for i in range(10)]for i in li:print(i)方法二:通过while循环# 虽然for循环已经很好用了,但是在有些情况下,使用while循环可以更灵活# 只需要将判断条件设置为小于列表长度,即可完成列表通过while循环的遍历li = [i for i in range(10)]i = 0while i <len(li):print(li[i])i += 1方法三:配合enumerate使用,同时获取列表的索引li = [i + 1 for i in range(10)] # 此时,i为一个元组,元组的第一个元素为索引,第二个元素为原列表的元素# 因此,在遍历列表的同时,需要同时获取坐标的情况下,可以配合enumerate()一起使用for i in enumerate(li):print(i)字典的遍历字典的遍历和列表有一些不同,因为字典有键和值两个关键部分。默认的遍历情况,是遍历字典的键,当然,可以通过字典的键取得值,也可以直接遍历值,或者直接遍历键和值。方法一:直接使用for循环直接使用for循环对一个字典进行遍历,默认取得的是字典的键dt = {i: i + 1 for i in range(10)} for i in dt:print("字典的键:", i) # 字典的键print("字典的值:", dt[i]) # 字典的值方法二:遍历dict.keys()这种方法与方法一的效果其实是一样的,同样是获取字典的键dt = {i: i + 1 for i in range(10)} for i in dt.keys():print("字典的键:", i) # 字典的键print("字典的值:", dt[i]) # 字典的值方法三:遍历dict.values()这种方法与方法一和二很不相同,因为它只获取了字典的值dt = {i: i + 1 for i in range(10)} # 这是很特殊的方法,因为它没有获取字典的键for i in dt.values():print("字典的值:", i) # 此时i不再是字典的键,而是值方法四:遍历dict.items()这种方法一般来说要更好,因为它同时获取到了字典的键和值,而且性能上要高于先获取键,再通过键获取对应的值dt = {i: i + 1 for i in range(10)} for i in dt.items():print("字典的键值对:", i)print("字典的键:", i[0])print("字典的值:", i[1])总结1,列表的遍历比较简单,除了配合enumerate()使用,可以同步获取索引以外,并没有特别值得纠结的。2,字典的遍历方法比较多,其中第四种是能适用于一切情况的,前两种也可以适用于一切情况,但是如果你同时需要获取键和值,性能不如第四种要好。第三种比较特别,除非你真的只需要字典的值,否则它在多数情况下是不能够满足需求的。

Python的for...in 循环有三种常见用法:

第一,按长度遍历 :

若不需要索引号index,可以直接用"for obj in obj-list"语句遍历

第二,若既需要索引,又需要成员值,可以用enumerate()函数

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串),同时输出数据和数据下标,常用于for-in循环。

第三,不关心索引,只希望同时遍历多个列表,可以用zip函数。

zip函数将多个列表作为输入,在每次迭代的时候,将每个列表的当前成员组合成一个元组输出。

有时我们有列出目录下都有哪些文件和子目录的需求,这种情况是有现成命令可用的,比如windows下的dir命令,linux下的ls命令都可以,那我们用python代码怎么实现呢?

我们利用python丰富的库很容易就能实现一个简易版本,下面我们就用4种方法来实现它。

一、使用os.popen

os.popen工作原理是新建一个子进程,然后用这个子进程执行命令,父进程与子进程间通过管道进行通信。

根据调用popen时的传参,我们可以通过管道读取子进程的输出也可以向子进程写数据,默认是读取子进程的输出。

从以上描述可以看出popen是非常通用的,不是只能用于我们这个例子哦。

那我们开始用它实现我们的需求吧,代码如下:

哈哈,是不是很简单,这种方式虽然能达到目的但其实并不是我们想要的,我们本来就是要实现ls的,结果调用了ls,所以严格意义上来说我们并没有实现ls,那让我们继续往下看其它方法吧,嘿嘿。

二、使用glob.glob

glob可以根据你使用的通配符对文件进行匹配,利用这个特性我们可以列出当前目录下都有哪些文件和子目录,如下代码:

三、使用os.listdir

os.listdir同样可以列出某个目录下都有哪些文件和子目录,如下代码:

四、使用os.walk

os.walk在遍历目录方面非常强大,它不但可以遍历你需要的目录,也可以递归遍历子目录且递归的深度可以用代码控制,下面让我们分别看下怎么遍历整个目录树以及怎么控制深度吧。

os.walk默认是遍历整个目录树的,如下代码就会递归打印出当前目录下所有文件:

那我们怎么控制遍历的深度,比如只遍历n层呢?其实很简单,只需要定义一个深度变量,然后到达n后跳出循环即可,如下代码就只遍历1层:

至此我们已经写完4种方法了,如果你还有其他方法,欢迎评论交流。