标准库函数os.listdir()是在文件操作和文件遍历时常用的函数之一,用来获取指定文件夹中的所有文件和子文件夹名称组成的列表,完整语法为:
listdir(path=None)
os.listdir()函数在使用时应注意以下几个问题:
1)函数参数path的值可以是字符串或字节串,如果使用字符串指定文件夹则返回的列表中都是字符串形式的文件和子文件夹名字,如果使用字节串指定文件夹则返回的列表中都是字节串形式(UTF-8编码)的文件和子文件夹名字,如果不指定参数则默认返回当前文件夹中的文件和子文件夹名字。
2)如果指定的文件夹中包含子文件夹,listdir()函数返回的列表中不包含子文件夹中的内容。如果需要遍历子文件夹中的内容,可以使用深度优先或广度优先遍历目录树的方法,详见:Python使用广度优先和深度优先两种方法遍历目录树
3)listdir(path)函数返回的列表中的路径都是相对于参数path的相对路径,如果参数path不是当前文件夹,那么listdir(path)返回的列表中的路径都无法直接访问。
4)listdir()函数返回的列表中的字符串是“乱序”的,大致来说,是按字符串转换为大写或小写之后的Unicode编码升序排序的,与我们习惯的按数字、拼音或字母顺序不一样。如果需要的话(例如按文件名编号升序排序后导入其他文件或系统),可以对列表中的字符串进行排序之后再使用。
假设Python安装目录中有test子文件夹,内容如下(随机生成文件名):
使用listdir()函数获取其中文件名以及不同排序规则显示效果演示如下: