python OS库
Posted cltt
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python OS库相关的知识,希望对你有一定的参考价值。
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:codea [] [‘2.txt‘] E:code [] [‘你的.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:code1.bmp E:codecode.lnk E:codeds.py E:codea2.txt E:code你的.doc
os.path.splitext(path)
说明:将对应路径的文件名和后缀名分割
示例:
>>> #定义参数内容 ... import os >>> path1=‘E: est6.txt‘#文件路径 >>> path2=‘E: est‘#目录 >>> >>> #用splitext()方法切割 ... split_path1=os.path.splitext(path1) >>> split_path2=os.path.splitext(path2) >>> >>> #打印结果 ... print(split_path1)#正常切割 (‘E: estx06‘, ‘.txt‘) >>> print(split_path2)#目录切割后异常 (‘E: est‘, ‘‘) >>>
简单运用:统计整个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库的主要内容,如果未能解决你的问题,请参考以下文章