python os.walk怎么循环

Python016

python os.walk怎么循环,第1张

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

可以得到一个三元tupple(dirpath, dirnames, filenames),

第一个为起始路径,第二个为起始路径下的文件夹,第三个是起始路径下的文件。

dirpath 是一个string,代表目录的路径,

dirnames 是一个list,包含了dirpath下所有子目录的名字。

filenames 是一个list,包含了非目录文件的名字。

这些名字不包含路径信息,如果需要得到全路径,需要使用os.path.join(dirpath, name).

通过for循环自动完成递归枚举

例如:

F:\aaa 目录是这样的文件目录结构

F:\aaa

|--------1.txt

|--------2.txt

|--------3.txt

|--------4

|-------5.txt

|-------6.txt

|-------7.txt

[python] view plain copy

#!/usr/bin/env python

# 2.py

# use UTF-8

# Python 3.3.0

# os.walk()的使用

import os

# 枚举dirPath目录下的所有文件

def main():

#begin

fileDir = "F:" + os.sep + "aaa"     # 查找F:\aaa 目录下

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

#begin

print(root)

print(dirs)

print(files)

#end

os.system("pause")

#end

if __name__ == '__main__':

#begin

main()

#end

# 输出

# F:\aaa

# ['4']

# ['1.txt', '2.txt', '3.txt']

# F:\aaa\4

# []

# ['5.txt', '6.txt', '7.txt']

你也可以这样

[python] view plain copy

#!/usr/bin/env python

# 3.py

# use UTF-8

# Python 3.3.0

# os.walk()的使用

import os

# 枚举dirPath目录下的所有文件

def main():

#begin

fileDir = "F:" + os.sep + "aaa"     # 查找F:\aaa 目录下

for a in os.walk(fileDir):

#begin

print(a[0])

print(a[1])

print(a[2])

#end

os.system("pause")

#end

if __name__ == '__main__':

#begin

main()

#end

# 输出

# F:\aaa

# ['4']

# ['1.txt', '2.txt', '3.txt']

# F:\aaa\4

# []

# ['5.txt', '6.txt', '7.txt']

通过for循环即可完成目录的递归.

你还可以这样

[python] view plain copy

#!/usr/bin/env python

# 2.py

# use UTF-8

# Python 3.3.0

# os.walk()的使用

import os

# 枚举dirPath目录下的所有文件

def main():

#begin

fileDir = "F:" + os.sep + "aaa"     # 查找F:\aaa 目录下

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

#begin

for dir in dirs:

#begin

print(os.path.join(root, dir))

#end

for file in files:

#begin

print(os.path.join(root, file))

#end

#end

os.system("pause")

#end

if __name__ == '__main__':

#begin

main()

#end

# 输出

# F:\aaa\4

# F:\aaa\1.txt

# F:\aaa\2.txt

# F:\aaa\3.txt

# F:\aaa\4\5.txt

# F:\aaa\4\6.txt

# F:\aaa\4\7.txt

import os,os.path

def func(arg,dirname,names):

for filespath in names:

print os.path.join(dirname,filespath)

if __name__=="__main__":

print "==========os.walk================"index = 1

for root,subdirs,files in os.walk("c:\\test"):

print "第",index,"层"

index += 1

for filepath in files:

print os.path.join(root,filepath)

for sub in subdirs:

print os.path.join(root,sub)

print "==========os.path.walk================"os.path.walk("c:\\test",func,())

结果如下:

总结:

(1)两者都能实现达到同一个效果

(2)在python3中,os.path.walk要被os.walk取代了,大家尽量用os.walk(3)os.walk明显比os.path.walk要简洁一些,起码它不需要回调函数,遍历的时候一目了然:root,subdirs,files(4)可能你在烦恼,os.path.walk的第三个参数arg有什么用,好吧,当你os.path.walk()赋值给arg的时候,你就可以在第二个参数对应的func中用arg了

os.chdir()

简述

os.chdir 主要用于改变当前工作目录到指定的工作目录

语法

返回值

如果允许访问返回 True , 否则返回False。

举例

os.walk()

简述

os.walk()用于在文件目录中进行查找和遍历操作。是一个方便易用的文件,目录遍历器

语法

参数

举例