码迷,mamicode.com
首页 > 编程语言 > 详细

python OS库

时间:2020-03-21 14:30:43      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:dir   color   symbol   自带   number   print   top   简单   split   

os.walk函数的用法  (遍历文件夹下文件并获得路径)

我们在使用python时时常会遇到调用某些文件的需求,这时我们就需要得到这些文件的路径。python强大的自带os模块使得获得路径变得很容易。

下面介绍如何使用os.walk函数来遍历文件夹及子文件夹下所有文件并得到路径。

os.walk的完整定义形式如下:

os.walk(top, topdown=True, onerror=None, followlinks=False)
参数:

top:需要遍历目录的地址。
topdown 为真,则优先遍历top目录,否则优先遍历top的子目录(默认为开启)。
onerror 需要一个 callable 对象,当walk需要异常时,会调用。
followlinks 如果为真,则会遍历目录下的快捷方式(linux 下是 symbolic link)实际所指的目录(默认关闭)。
以上四个参数一般只需要指定第一个文件夹路径,剩下的一般情况不需要指定。

 

os.walk使用
os.walk 的返回值是一个生成器(generator),也就是说我们需要用循环不断的遍历它(不可以直接print),来获得所有的内容。

每次遍历的对象都是返回的是一个三元元组(root,dirs,files)

root 所指的是当前正在遍历的这个文件夹的本身的地址
dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)
注意,函数会自动改变root的值使得遍历所有的子文件夹。所以返回的三元元组的个数为所有子文件夹(包括子子文件夹,子子子文件夹等等)加上1(根文件夹)。

 下面举个例子

import os
path = E:\code

for root,dirs,files in os.walk(path):
       print(root,dirs,files)

E:\code [a, b] [1.bmp, code.lnk, ds.py]
E:\code\a [] [2.txt]
E:\code\b [] [你的.doc]

 

import os
path = E:\code

for root,dirs,files in os.walk(path):
       #print(root,dirs,files)
       for file in files:
           print(os.path.join(root,file))


E:\code\1.bmp
E:\code\code.lnk
E:\code\ds.py
E:\code\a\2.txt
E:\code\b\你的.doc

 

 

os.path.splitext(path)

说明:将对应路径的文件名和后缀名分割

示例:

>>> #定义参数内容
... import os
>>> path1=‘E:\test\6.txt‘#文件路径
>>> path2=‘E:\test‘#目录
>>>
>>> #用splitext()方法切割
... split_path1=os.path.splitext(path1)
>>> split_path2=os.path.splitext(path2)
>>>
>>> #打印结果
... print(split_path1)#正常切割
(‘E:\test\x06‘, ‘.txt‘)
>>> print(split_path2)#目录切割后异常
(‘E:\test‘, ‘‘)
>>>

 

简单运用:统计整个e盘下,txt文件的总数

>>> file_number=0
>>> for root,dirs,files in os.walk("e:\\"):
...     for file in files:
...         if os.path.splitext(file)[1]==".txt":#将对应的文件与文件名分割
...             file_number+=1
...             #print (file)
...
>>>
>>> print (file_number)
246

python OS库

标签:dir   color   symbol   自带   number   print   top   简单   split   

原文地址:https://www.cnblogs.com/tingtin/p/12539074.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!