python目录下的文件夹_Python列出当前文件夹下文件的两种方法

使用Python做一些自动化操作时,经常与文件夹和文件打交道,这就依赖于OS模块了。

OS是Operate System的缩写,是Python标准库中一个用于访问操作系统功能的模块,OS模块中的接口可以跨平台、跨系统访问。

OS模块功能很强大,能够做很多事,举个栗子吧:

获取平台信息,判断操作系统

对目录操作

判断操作

有时候我们需要扫码某个文件夹下的文件,然后根据扩展名自动载入对应文件,比如批量读取所有Excel文件,处理Excel里面的数据。下面就介绍两个方法,如何对文件夹/文件进行扫描。

os.listdir()

[scode]os.listdir()[/scode]方法语法格式如下:

os.listdir(path)

该方法用于返回指定的文件夹path包含的文件或文件夹的名字的列表,在Unix系统下[mark]不会包含 . 和 .. [/mark],并且[mark]不会遍历[/mark]列出子文件夹下的文件和文件夹。

如果你想列出当前Python文件所在目录下的所有文件和文件夹,再告诉你一个很有用的方法:[scode]os.getcwd()[/scode]

当然我们还可以对文件夹和文件进行过滤,下面以代码作为演示:

import os

current_dir = os.getcwd()

for f in os.listdir(current_dir):

# 返回当前绝对路径,使用os.path.join()方法可以不用考虑路径分隔符

absolute_path = os.path.join(path, f)

# 如果是文件

if os.path.isfile(absolute_path):

print("这是文件: ", absolute_path)

elif os.path.isdir(absolute_path):

print("这是文件夹:", absolute_path)

使用[scode]os.path.join()[/scode]可以完美解决不同平台路径的分隔符问题,再也不怕搞错路径啦。

我们知道,Windows系统路径分隔符是"\\", Linux类系统如Ubuntu的分隔符是"/"。如果你是一个善于动手的好孩子,可以手动添加分隔符,[scode]os.sep[/scode]可以返回当前平台的路径分隔符。

os.walk()

如果你搜索Python列出当前文件夹下相关文章,大多数看到的都是介绍os.walk()方法,如果我一开始介绍这个方法,你的小手已经点向了小红叉。

gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==

walk()方法语法格式如下:

os.walk(top[, topdown=True[, οnerrοr=None[, followlinks=False]]])

top -- 是你所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files)。

root 所指的是当前正在遍历的这个文件夹的本身的地址

dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)

files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)

topdown --可选,为 True,则优先遍历 top 目录,否则优先遍历 top 的子目录(默认为开启)。如果 topdown 参数为 True,walk 会遍历top文件夹,与top 文件夹中每一个子目录。

onerror -- 可选,需要一个 callable 对象,当 walk 需要异常时,会调用。

followlinks -- 可选,如果为 True,则会遍历目录下的快捷方式(linux 下是软连接 symbolic link )实际所指的目录(默认关闭),如果为 False,则优先遍历 top 的子目录。

敲重点,[scode]os.walk()[/scode]会进行遍历,不管你的文件目录藏的有多深,也逃不过它的五指山,这是与[scode]os.list()[/scode]不同点之一。

下面以一个例子演示[scode]os.walk()[/scode]方法

import os

current_path = os.getcwd()

for root, dirs, files in os.walk(current_path, topdown=False):

for name in files:

print(os.path.join(root, name))

for name in dirs:

print(os.path.join(root, name))

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值