分享免费的编程资源和教程

网站首页 > 技术教程 正文

Python读取文件目录之os模块的使用

goqiw 2024-09-12 16:22:03 技术教程 13 ℃ 0 评论

当我们需要读取文件目录,对文件进行批量操作的时候,就需要使用到os模块。os模块提供了非常丰富的方法用来处理文件和目录。可以通过下面的语句导入:

import os

如果我们想读取当前路径下的文件目录:

ld = os.listdir()
print(ld)

# ['.git', 'bbs', 'db.sqlite3', 'manage.py', 'mybbs', 'test.py']

使用listdir()可以返回一个当前python程序所在路径下的所有文件目录。可以看到,在上面的返回结果中,例如bbs,mybbs等没有后缀的为文件夹,有后缀的,如test.py为具体的文件。这个结果你运行出来应该和我不同,毕竟我们的文件目录是不相同的。

在listdir()中,我们也可以传入具体的路径,用于获取该路径下的文件目录:

ld = os.listdir('c:/')
print(ld)

#['$Recycle.Bin', 'AMTAG.BIN', 'aow_drv.log', 'bootTel.dat', 'Documents and Settings', 'Downloads', 'DumpStack.log.tmp', 'hiberfil.sys', 'install.log', 'Intel', 'OneDriveTemp', 'pagefile.sys', 'PerfLogs', 'Program Files', 'Program Files (x86)', 'ProgramData', 'QMDownload', 'Recovery', 'SDKTemp', 'swapfile.sys', 'System Volume Information', 'Temp', 'Users', 'Windows']

上面的代码中,我们传入了c盘的路径,获取了c盘目录下的所有文件目录。

在获取了文件目录之后,我们可能需要对指定的文件类型进行批量操作,因此,我们需要对文件进行筛选,筛选的方式是可以自定义的,例如文件名,或者是文件的后缀。这里我们以后缀为例子。

为了演示,我创建了一些空的文件:

现在,我们需要将txt文件筛选出来进行操作,我们可以:

import os
ld = os.listdir()
print(ld)

# ['test.py', '新建 BMP 图像 - 副本 (2).bmp', '新建 BMP 图像 - 副本 (3).bmp', '新建 BMP 图像 - 副本 (4).bmp', '新建 BMP 图像 - 副本.bmp', '新建 BMP 图像.bmp', 
#'新建 文本文档 - 副本 (2).txt', '新建 文本文档 - 副本 (3).txt', '新建 文本文档 - 副本 (4).txt', '新建 文本文档 - 副本 (5).txt', '新建 文本文档 - 副本 (6).txt', 
#'新建 文本文档 - 副本 (7).txt', '新建 文本文档 - 副本.txt', '新建 文本文档.txt']

先将当前目录下的所有文件读取出来,保存到一个列表中。然后进行筛选。由于我们需要筛选出来txt后缀的文件,所以可以使用到os.path.splitext()方法,该方法传入一个文件名,拆分后返回一个元组,例如:

print(ld[1])
print(os.path.splitext(ld[1]))

# 新建 BMP 图像 - 副本 (2).bmp
# ('新建 BMP 图像 - 副本 (2)', '.bmp')

之后,我们对元组进行切片就可以取得我们需要筛选的目标,现在我们批量来进行筛选:

txt_file = []
for filename in ld:
    if os.path.splitext(filename)[1] == '.txt':
        txt_file.append(filename)
print(txt_file)

# ['新建 文本文档 - 副本 (2).txt', '新建 文本文档 - 副本 (3).txt', '新建 文本文档 - 副本 (4).txt', '新建 文本文档 - 副本 (5).txt', '新建 文本文档 - 副本 (6).txt', '新建 文本文档 - 副本 (7).txt', '新建 文本文档 - 副本.txt', '新建 文本文档.txt']

这样,就完成了文件类型的筛选。在实际编程中,我们需要先尝试完成一个完整的功能,然后再利用循环等方式去批量完成。关于python中的循环结构,可以参考之前的文章。Python中的控制语句

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表