Python中如何遍历指定目录下的所有文件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中如何遍历指定目录下的所有文件?相关的知识,希望对你有一定的参考价值。

Python中如何遍历指定目录下的所有文件?

例如:在C:\TDDOWNLOAD目录下有a.txt、b.txt两个文件,另有\sub1子文件夹,C:\TDDOWNLOAD\sub1下又有c.txt、d.txt两个文件。

1. os.walk
os.walk()返回一个三元素的tuple:当前路径、子文件夹名称、文件列表。
>>> import os
>>> def fun( path ):
... for root, dirs, files in os.walk( path ):
... for fn in files:
... print root, fn
...
>>> fun( r'C:\TDDOWNLOAD' )
C:\TDDOWNLOAD a.txt
C:\TDDOWNLOAD b.txt
C:\TDDOWNLOAD\sub1 c.txt
C:\TDDOWNLOAD\sub1 d.txt
>>>

2. glob.glob
glob.glob()只接受一个参数,这个参数既代有路径,又代有匹配模式,返回值为一个列表。注意,glob.glob()无法直接穿透子文件夹,需要自己处理:
>>> def fun( path ):
... for fn in glob.glob( path + os.sep + '*' ): # '*'代表匹配所有文件
... if os.path.isdir( fn ): # 如果结果为文件夹
... fun( fn ) # 递归
... else:
... print fn
...
>>> fun( r'C:\TDDOWNLOAD' )
C:\TDDOWNLOAD\a.txt
C:\TDDOWNLOAD\b.txt
C:\TDDOWNLOAD\sub1\c.txt
C:\TDDOWNLOAD\sub1\d.txt
>>>

'*'为匹配模式,代表匹配所有文件,只有这样才能将子文件夹查出来,以便递归深入,探查下一层的文件。

参考资料:http://wenwen.soso.com/z/q212174666.htm

参考技术A os.listdir("目录名") 目录下所有文件名

用shell脚本递归遍历某个目录下的所有文件并移动到某个指定的目录中

1,先看下脚本
cat recursive.sh

#!/bin/sh
read -p "input path:" FilePath

function getAllfiles(){
for file in ls $FilePath
do
if [ -f $file ]
then
echo $file
mv $file /bak_file/
elif test -d $file
then
echo "-------------------------------->"
cd $file
FilePath=pwd
getAllfiles
cd ..
echo -e "33[32m[############$file is a directory ....#######]33[0m"
echo "<-------------------------------"
else
echo "$FilePath is a invalid path"
fi
done

}
cd $FilePath
getAllfiles $FilePath

2,测试,现在讲/test/目录下的所有文件都移动到/bak_file/目录中
2.1,先查看下/test/目录的结构
技术分享图片
2.2,执行脚本,移动/test/目录下的所有文件
sh recursive.sh
2.3,查看/bak_file/目录
技术分享图片
2.4,测试成功,完毕!

以上是关于Python中如何遍历指定目录下的所有文件?的主要内容,如果未能解决你的问题,请参考以下文章

C#,给定一个目录,遍历该目录下的所有文件、文件夹

python读取指定目录中所有文本文件的第一行,并以此为该文本文件名重命名

用shell脚本递归遍历某个目录下的所有文件并移动到某个指定的目录中

perl 遍历指定目录下的所有文件,替换指定文本内容,返回受影响的文件路径

Python 使用 os 模块遍历目录

如何获取目录下的文件数(一行Python)