python使⽤os.listdir和os.walk获得⽂件的路径的⽅法本⽂介绍了python使⽤os.listdir和os.walk获得⽂件的路径的⽅法,分享给⼤家。具体如下:
os.listdir() ⽅法⽤于返回指定的⽂件夹包含的⽂件或⽂件夹的名字的列表。这个列表以字母顺序。它不包括 '.' 和'..' 即使它在⽂件夹中。
os.walk() ⽅法⽤于通过在⽬录树种游⾛输出在⽬录中的⽂件名,向上或者向下。
情况1:在⼀个⽬录下⾯只有⽂件,没有⽂件夹,这个时候可以使⽤os.listdir
在我们的桌⾯上有⼀个file⽬录(⽂件夹),⾥⾯有三个⽂件
file(dir)|
--|
--|
--|
⽤下⾯的程序获得⽂件的绝对路径:
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把⽬录的路径和⽂件名结合起来,就得到了⽂件的绝路路径,结果如下:
C:\Users\Administrator\Desktop\
C:\Users\Administrator\Desktop\
C:\Users\Administrator\Desktop\
情况2:递归的情况,⼀个⽬录下⾯既有⽬录(⽬录下⾯还可能有⽬录和⽂件)也有⽂件,如何读取⾥⾯所有⽂件,使⽤os.walk:
os.walk介绍:
我们在桌⾯上⾯建⽴⼀个file⽬录,⾥⾯的组织结构如下:
file(dir):
--|file1(dir):
--|
--|
--|file2(dir)
--|
--|
--|
运⾏⼀下代码:
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_test2 .txt']
C:\Users\Administrator\Desktop\file\file1 [] ['', '']
C:\Users\Administrator\Desktop\file\file2 [] ['']
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下⾯有两个⽂件和
python怎么读取桌面上的文件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\
C:\Users\Administrator\Desktop\file\file_test2 .txt
C:\Users\Administrator\Desktop\file\file1\
C:\Users\Administrator\Desktop\file\file1\
C:\Users\Administrator\Desktop\file\file2\
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。