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库的主要内容,如果未能解决你的问题,请参考以下文章

python中os库用法详解(总结)

Python标准库 - os库

python标准库 —— os模块

你如何在 python 中处理 graphql 查询和片段?

python标准库之os库

Python 标准库-os