python--利用os模块读取指定目录下所有文件名


源码

import os

def scanfile(path):
    filelist = os.listdir(path)
    for filename in filelist:
        filepath = os.path.join(path, filename)
        if os.path.isdir(filepath):
            scanfile(filepath)
        print(filepath)

allfile = scanfile('自定义指定路径')

思路

1.使用第三方模块
2.怎么样读取到文件的名字
3.要求指定目录下所有文件的名字,若遇到文件夹则需要进一步读取

过程

1.直接引入os模块即可

os就是“operating system”的缩写,顾名思义,os模块提供的就是各种 Python 程序与操作系统进行交互的接口。通过使用os模块,一方面可以方便地与操作系统进行交互,另一方面页可以极大增强代码的可移植性。如果该模块中相关功能出错,会抛出OSError异常或其子类异常。

import os

在这里插入图片描述

2.既然我们使用到了os模块,就看看它所带的内置方法哪些可以读取文件名

首先找到了os.listdir可以读取指定路径下所有文件和文件夹的名字
比如我创建了一个文件夹,里面包含了1.txt,文件夹2,3.doc
在这里插入图片描述
使用os.listdir来试着读取一下
定义一个函数,就叫它scanfile吧,扫描文件的意思
需要传入的参数就是我们的文件路径

import os

def scanfile(path):
    filelist = os.listdir(path)
    print(filelist)

allfile = scanfile('D:\Desktop\\test')

得出结果
在这里插入图片描述
ok,到这里我们读取的功能算是完成一半了
不过,刚才提到文件夹的名字是2
而我们想要的是读取指定路径下所有文件的名字!
在这里插入图片描述

所以代码还不够完善
那么,要怎么进行下去呢?

3.考虑递归思想

既然我们要打印的是文件名字,那么遇到文件夹就应该再“扫描”一次
也就是再一次使用scanfile函数去执行这个文件夹路径
想法有了
首先,先确认当前读到的是文件还是文件夹
从刚才的输出结果可以看出返回了一个列表

['1.txt', '2', '3.doc']

那么就可以for循环遍历一下

for filename in filelist:

将文件和路径进行拼接

filepath = os.path.join(path, filename)

试着打印输出一下,看到是完整路径
在这里插入图片描述
接着使用os.path.isdir()来确认当前路径是否文件夹
如果是就再一次使用scanfile,
不是的话就直接输出文件名(也就是filename)

if os.path.isdir(filepath):
	scanfile(filepath)
print(filepath)

这次代码输出结果
在这里插入图片描述
验证
在这里插入图片描述

  • 11
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要批量读取指定目录下的指定文件名,可以使用Pythonos模块和正则表达式来实现。首先,你需要指定目录的路径和要读取文件名的通配符。然后,使用os.listdir()函数获取目录下的所有文件名。接下来,使用正则表达式匹配文件名,将匹配到的文件名写入到指定的txt文件中。 以下是一个示例代码: ```python import os import re def list_files_to_txt(dir, file, wildcard, recursion): exts = wildcard.split(" ") files = os.listdir(dir) for name in files: fullname = os.path.join(dir, name) if (os.path.isdir(fullname) and recursion): list_files_to_txt(fullname, file, wildcard, recursion) else: for ext in exts: if (name.endswith(ext)): file.write(name + "\n") break def read_name(): dir = input("请输入目录路径:") outfile = input("请输入要保存的txt文件名:") wildcard = input("请输入要读取文件名通配符:") file = open(outfile, "w") if not file: print("无法打开文件 %s 进行写入" % outfile) list_files_to_txt(dir, file, wildcard, 1) file.close() read_name() ``` 你需要在运行代码时输入目录路径、要保存的txt文件名和要读取文件名通配符。代码会将匹配到的文件名写入到指定的txt文件中。 #### 引用[.reference_title] - *1* [利用Python读取文件名及批量修改文件名](https://blog.csdn.net/qq_20532699/article/details/127157505)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Python批量读取文件名并保存至txt](https://blog.csdn.net/GeekYao/article/details/105074574)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值