os.walk 遍历感觉现在是智力和精力都不行了,就这一个遍历函数提取某个路径下的所有文件,花费了我2个多小时手机的评论我都没看,一般都是评论过去几个小时,或者第二天我才会看一下正如一个网友给我的评论,自学真的是太难,太痛苦;一个小小的符号,一个表达式,你要是没有搞明白,能够折腾你几个小时如果有一个高手给你指点一下,那也就是分分钟的事今天我在看一个os相关的函数,其实昨天都开始看了,一开始讲解的是for循环遍历某个路径下的所有文件,然后计算所有文件的大小这个我看明白了,不是很难,我截个图:import os
# 不知道自己的路径或者懒省事,可以get获取一下#os.getcwd
#获取到的路径我粘贴下面path='C:/Users/yanjshen/PycharmProjects/pythonProject1/venv/dns/dns'#获取这个路径下有那些文件 ['New Text Document 2.txt', 'New Text Document.txt']listfile=os.listdir(path)
#先给字节大小size赋值为0size=0# for 循环遍历每一个文件for file in listfile:
#利用join函数把遍历到的文件,设置为完整的绝对路径#C:/Users/yanjshen/PycharmProjects/pythonProject1/venv/dns/dns\New Text Document 2.txt
#C:/Users/yanjshen/PycharmProjects/pythonProject1/venv/dns/dns\New Text Document.txtnewpath=os.path.join(path,file)size+=os.path.getsize(newpath)print(size)现在有个问题,这是这个路径下的文件只有两个,如果这个路径下还有文件夹怎么办?我画个草图,类似下面,文件夹套文件夹,俄罗斯套娃,一套接一套这个我看了个视频讲解,没有看明白,我网上搜了搜,找不到类似的讲解一般来说,一个遍历函数,我会找3-4个不同的老师讲解视频去理解他但是类似这个讲解我没有找到我找到了一个os.walk函数,听了一下,自己敲了敲代码,问题解决了
os.walk的函数声明为:每次遍历的对象都是返回的是一个三元组root,dirs,filesroot 所指的是当前正在遍历的这个文件夹的本身的地址dirs 是一个 list ,内容是该文件夹中所有的目录的名字不包括子目录files 同样是 list , 内容是该文件夹中所有的文件不包括子目录我再最后再贴一张图片,分别演示一下,打印出来root,dirs,files的三种情形size = 0 path=r'C:\Users\yanjshen\PycharmProjects\pythonProject1\venv\Scripts' for (root,dirs,files) in os.walk(path): for i in files: #print(i) newfile=os.path.join(root,i) #print(newfile) size+=os.path.getsize(newfile) print(size)最后这个其实不用os.wark,采用for遍历的方法也可以,我还没有看明白,我明天再找找别人讲解的视频.目前看,采用os.wark确实挺爽,学会了(1+99)50/2 你再也不想从1加到100了th.getsize(newfile) print(size)最后这个其实不用os.wark,采用for遍历的方法也可以,我还没有看明白,我明天再找找别人讲解的视频.目前看,采用os.wark确实挺爽,学会了(1+99)50/2 你再也不想从1加到100了
0 评论