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

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

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

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

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

对目录操作

判断操作

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

os.listdir()

os.listdir()方法语法格式如下:

os.listdir(path)

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

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

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

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)

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

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

os.walk()

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

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 的子目录。

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

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

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))

你可能感兴趣的:(python当前目录下的文件)