Python笔试题(在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相/绝对路径)详解
前言:
这道题想必大家在面试或者练习时都遇到过,是一道经典的Python笔试题,主要考察的是对python标准库的基本使用。之所以说是详解,并不是着重说代码而是对于os模块操作的一个思路。
os模块介绍
operating system 用于访问操作系统功能的模块
os模块的基本方法
os.getcwd(): 查看当前所在路径
os.listdir(path): 列举目录下的所有文件(包含目录),返回一个列表
os.path.abspsth(path): 返回目录的绝对路径
os.path.split(path): 将路径分为文件夹、文件名
os.path.join(path1,path2): 将路径进行组合
os.mkdir() 创建一个空目录
os.rmdir() 删除一个空目录
os.makedirs() 生成多层递归目录。
os.removedirs(dirname) 删除多层递归空目录
os.rename() 修改目录名或者文件名
os.path.exists(path): 判断文件或者目录是否存在
os.path.isfile(path): 判断是否为文件 os.path.isdir(path): 判断是否为目录 这两个方法返回的都是True或者False 所以记住一个和 os.path.exists则可以判断目录或者文件夹了
os.path.getsize(name):获得绝对路径
大概就是这些方法了,其他方法可以去官方文档细致的查看。
再这里再啰嗦一下,os模块真的很简单,语法以及方法的命名都十分的简洁且易理解。但是os模块却是十分之重要的,无论是初学者还是开发人员都应该把上述最简单的os模块给熟记,命令很少找几个时间点花个十分钟记住他吧。
解题思路
这道题的解题思路同样十分的简单,无非就是经典的三步走。
数据输入: 这里面则是获取当前目录以及子目录下的所有文件或目录的名字
数据处理:判断名字是否为文件,再判断名称是否包含指定的字符串
数据输出:确定了包含指定字符串的文件,然后输出其相对/绝对路径
具体实现
先实现第一步,获取当前目录以及子目录下的所有文件或目录的名字。
这一步很简单,通过简单的递归就能实现。具体代码如下:
import os path = r"C:\Users\use\Desktop\2019-12-31" Aggregate_list = [] def search_file(path): for file in os.listdir(path): this_path = os.path.join(path, file) if os.path.isfile(this_path): Aggregate_list.append(this_path) else: Aggregate_list.append(this_path) search_file(this_path) return Aggregate_list print(search_file(path))
接着其实我们就是实现第二步,判断名字是否为文件(其实已经实现过了),判断名称是否包含指定的字符串,这一步同样很简单。只需要简单的加个判断,再返回包含的字符串,所以我们的参数又多了一个。具体代码如下:
import os path = r"C:\Users\use\Desktop\2019-12-31" str = "试试" Aggregate_list = [] def search_file(path,str): for file in os.listdir(path): this_path = os.path.join(path, file) if os.path.isfile(this_path): if str in this_path: Aggregate_list.append(this_path) else: search_file(this_path,str) return Aggregate_list print(search_file(path,str))
我们惊奇的发现代码不但没有增多,反而减少了,那接下来则是我们的最后一步了,输出其绝对路径,或者相对路径。其实正常情况下,这一步做到这里就可以结束了。这一步其实是有些鸡肋,但是因为我看了一下,有些面试题提的是相对路径、有些面试题提的是绝对路径。所以这里的话我们把这个判断强加上了,当然其实下面这个代码的意义并不大。具体代码如下:
import os Path = r"C:\Users\use\Desktop\2019-12-31" path = r"C:\Users\use\Desktop\2019-12-31" str = "试试" pwd = os.getcwd() Aggregate_list = [] def search_file(path,str,other):#other传-1时为相对路径,否则为相对路径 for file in os.listdir(path): this_path = os.path.join(path, file) if os.path.isfile(this_path): if this_path.find(str) != -1: if other == -1: the_path=this_path.replace(Path,"")[1:] Aggregate_list.append(the_path) else: Aggregate_list.append(this_path) else: search_file(this_path,str,-1) return Aggregate_list print(search_file(path,str,-1))
- 点赞
- 收藏
- 分享
- 文章举报
- 【代码】当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出绝对路径
- python 文件和目录 当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径。
- 编写一个Python程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径
- Python:编写函数,能在当前目录以及子目录下查找文件名包含指定字符串的文件,并打印出完整路径
- Python 在当前目录以及其子目录下查找文件名包含指定字符串的文件,并打印出相对路径。
- 在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径
- 编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径。
- 使用递归打印当前目录以及当前目录的所有子目录下指定文件类型的绝对路径
- python-------------------查找文件名包含指定字符串的文件,打印完整路径
- 编写文件搜索小程序:1. 输入绝对路径以及搜索关键字,2. 搜索指定路径下(包括子文件夹)中名称包含关键字的所有文件并打印出,3. 将当前操作记录日志
- Linux查找当前目录及其子目录下所有包含指定字符串的文件
- 采用多线程和生产者消费者模式来实现对于一个目录以及所有子目录下的文件内容的搜索,打印出包含指定关键字的行.
- python查找指定目录下所有文件,以及改文件名的方法
- c语言查找某路径下文件名中包含指定字符串的所有文件
- 查找当前目录及其子目录所有文件中包含的字符串(find与grep的应用)
- Python列出当前目录下所有含有指定名称的文件(包括路径)
- grep命令查找当前目录下包含某个字符串的所有文件
- Python模块详解以及import本质,获得文件当前路径os.path.abspath,获得文件的父目录os.path.dirname,放到系统变量的第一位sys.path.insert(0,x)
- Python 检索目录下所有文件中包含指定字符串的文件
- python---os,sys的文件操作,strip()去除空格,.号当前目录查找,绝对路径查找