遍历文件目录的python 代码
来源:互联网 发布:詹姆斯打球特点 知乎 编辑:程序博客网 时间:2024/05/01 06:14
最近对python产生了兴趣,看了书后就想写写python代码实践一下。
我想到了一个递归遍历目录下所有文件的例子:首先显示当前的工作目录,然后遍历该目录下的所有文件,如果遇到的是目录(文件夹),则也显示该目录下的所有文件,如此循环。
实现代码如下
import
os
def
get_file_names(path_name):
print
path_name
file_names
=
os.listdir(path_name)
for
name
in
file_names:
if
os.path.isdir(name):
get_file_names(os.path.abspath(name))
else
:
print
name
get_file_names(os.getcwd())
上面代码中的os.getcwd()的作用是返回当前的工作目录,os.listdir 以列表的形式返回该目录下的所有文件和目录,但不包括子目录中的内容。
python 中怎么判断一个路径是文件还是目录(文件夹)呢?用os.path.isfile() 或者 os.path.isdir() 函数。
奇怪的是,开始我以为如果不是文件就是目录了,于是写了一下的代码
if
os.path.isfile(name):
print
name
else
:
get_file_names(os.path.abspath(name))
结果遍历目录下的一个可执行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()实例代码:
file_names
=
os.walk(path_name)
for
root,dirs,files
in
file_names:
for
filename
in
files:
print
os.path.join(root,filename)
os.path.join()的用法
os.path.join(path1[, path2[, ...]])是将对个路径连接组合返回,其中第一个绝对路径之前的参数会被忽略。
- 遍历文件目录的python 代码
- Python之文件目录遍历实例代码
- 遍历文件的python代码
- python 文件目录遍历
- python遍历文件目录
- python遍历文件目录
- python遍历目录文件
- 遍历目录复制文件的代码
- 使用 python 遍历目录下的文件
- Python 遍历目录下的所有文件
- python 遍历目录下的所有文件
- python遍历目录,读写文件
- python文件操作遍历目录
- python 遍历目录所有文件
- python 遍历目录所有文件
- Python遍历目录文件的两种方法
- python一个遍历文件目录的小脚本
- 【Python】三种遍历文件目录的方法
- @suppressWarnings
- Moving an IIS SSL certificate to a Domino Keyring File[转]
- SharePoint Server 2010的移动设备配置方案
- 反射机制动态代理
- java语言打印等腰三角形-作者:逝秋
- 遍历文件目录的python 代码
- ARCGIS viewer入门(11)自定义InfoSymbol
- 协同过滤推荐算法
- 应用程序用户启动时崩溃
- 腾讯网无障碍说明
- 学习C++:实践者的方法(Beta1)-刘未鹏编程语言系列
- Strut2标签的S:if的用法
- opencv自带的blobtrack学习
- How do you import a wildcard domain certificate into Domino?