您的位置:首页 > 编程语言 > Python开发

遍历文件目录的python 代码

2012-12-13 15:36 609 查看
最近对python产生了兴趣,看了书后就想写写python代码实践一下。

我想到了一个递归遍历目录下所有文件的例子:首先显示当前的工作目录,然后遍历该目录下的所有文件,如果遇到的是目录(文件夹),则也显示该目录下的所有文件,如此循环。

实现代码如下

上面代码中的os.getcwd()的作用是返回当前的工作目录,os.listdir 以列表的形式返回该目录下的所有文件和目录,但不包括子目录中的内容。

python 中怎么判断一个路径是文件还是目录(文件夹)呢?用os.path.isfile() 或者 os.path.isdir() 函数。

奇怪的是,开始我以为如果不是文件就是目录了,于是写了一下的代码

结果遍历目录下的一个可执行ruby脚本文件却报错

OSError: [Errno 2] No such file or directory

就是认为某一个可执行的.rb文件不是文件,即os.path.isfile(“test.rb”)返回False ,难道是要文本文件才是真的,可是可执行的python 脚本文件却又可以正常输出文件名。

所以我改用os.path.isdir(),也这样才合理,因为毕竟是目录才可以遍历嘛。注意,file_names中存储的是文件名或者目录名,目录名需要转化为绝对路径才可以传递给get_file_names() 函数,所以使用 os.path.abspath() 把相对路径转化为绝对路径。

其实,python 还有另一个遍历文件的函数os.walk ,它可以返回目录下的所有文件和目录,包括子目录下的内容。os.walk()函数返回的是一个元组,该元组有3个元素,这3个元素分别表示每次遍历的路径名,目录列表和文件列表。

所以上面的get_file_names()函数的部分可以写为

os.walk()实例代码:

os.path.join()的用法

os.path.join(path1[, path2[, ...]])是将对个路径连接组合返回,其中第一个绝对路径之前的参数会被忽略。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: