python使用os.listdir和os.walk得到文件的路径

状况1:在一个目录下面只有文件,没有文件夹,这个时候能够使用os.listdir

在咱们的桌面上有一个file目录(文件夹),里面有三个文件spa

file(dir)|code

    --|test1.txtblog

    --|test2.txt递归

    --|test3.txt字符串

用下面的程序得到文件的绝对路径:class

import os
path = r'C:\Users\Administrator\Desktop\file'
for filename in os.listdir(path):
    print(os.path.join(path,filename))

使用os.listdir读取到一个目录下面全部的文件名,而后使用os.path.join把目录的路径和文件名结合起来,就获得了文件的绝路路径,结果以下:test

C:\Users\Administrator\Desktop\file\test1.txt
C:\Users\Administrator\Desktop\file\test2.txt
C:\Users\Administrator\Desktop\file\test3.txt

状况2:递归的状况,一个目录下面既有目录也有文件,使用os.walk:

os.walk介绍:

咱们在桌面上面创建一个file目录,里面的组织结构以下:import

file(dir):file

     --|file1(dir):yield

           --|file1_test1.txt

           --|file1_test2.txt

     --|file2(dir)

           --|file2_test1.txt

     --|file_test1.txt

     --|file_test2.txt

运行一下代码:

import os
path = r'C:\Users\Administrator\Desktop\file'
for dirpath,dirnames,filenames in os.walk(path):
    print(dirpath,dirnames,filenames)

输出结果以下:

C:\Users\Administrator\Desktop\file ['file1', 'file2'] ['file_test1.txt', 'file_test2 .txt']
C:\Users\Administrator\Desktop\file\file1 [] ['file1_test1.txt', 'file1_test2.txt']
C:\Users\Administrator\Desktop\file\file2 [] ['file2_test1.txt']

os.walk输入一个路径名称,以yield的方式(实际上是一个生成器)返回一个三元组 dirpath, dirnames, filenames,

dirpath为目录的路径,为一个字符串。好比上面的 C:\Users\Administrator\Desktop\file和C:\Users\Administrator\Desktop\file\file1等。

dirnames列出了目录路径下面全部存在的目录的名称。好比在 C:\Users\Administrator\Desktop\file下面有两个目录:file1和file2,那么它就列出了这个目录路径下的目录名称。

filenames列出了目录路径下面全部文件的名称。一样在 C:\Users\Administrator\Desktop\file下面有两个文件file_test1.txt和file_test2 .txt,那么程序将会列出这两个文件名。

 

如何得到一个路径下面全部的文件路径:

import os
path = r'C:\Users\Administrator\Desktop\file'
for dirpath,dirnames,filenames in os.walk(path):
    for filename in filenames:
        print(os.path.join(dirpath,filename))

 

获得的结果以下:

C:\Users\Administrator\Desktop\file\file_test1.txt
C:\Users\Administrator\Desktop\file\file_test2 .txt
C:\Users\Administrator\Desktop\file\file1\file1_test1.txt
C:\Users\Administrator\Desktop\file\file1\file1_test2.txt
C:\Users\Administrator\Desktop\file\file2\file2_test1.txt
相关文章
相关标签/搜索