题目:编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径

题目不难,但是初接触Python,对函数不够熟悉,犯了不少错误。总结如下:

os.path.isdir()方法应该传入带绝对路径的文件名,如:r'e:\java',如果只是传入文件名,如'java',该方法只会在当前工作目录(可以用os.getcwd()查看)下查找有没有同名文件夹,有则返回true

os.listdir()方法只返回文件名,需要自己用os.path.join()方法拼接出绝对路径。

os.path.realpath()获取绝对路径,该方法会将传入的文件名与当前工作目录拼接出绝对路径。如果要使用这个方法,必须先用os.chdir()改变当前工作目录!建议优先用os.path.join()。

os.path.relpath()获取相对路径,如果不传入命名关键字参数start,如start = r'C:\python',则该方法会与根据当前工作目录计算相对路径,目录不同则报错。

非递归版本:

import os

dir = r'e:\java'

specify_str = 'm'

# 搜索指定目录

results = []

folders = [dir]

for folder in folders :

# 把目录下所有文件夹存入待遍历的folders

folders += [os.path.join(folder, x) for x in os.listdir(folder) \

if os.path.isdir(os.path.join(folder, x))]

# 把所有满足条件的文件的相对地址存入结果results

results += [os.path.relpath(os.path.join(folder, x), start = dir) \

for x in os.listdir(folder) \

if os.path.isfile(os.path.join(folder, x)) and specify_str in x]

# 输出结果

for result in results:

print(result)

print('找到 %s 个结果!' % len(results))

输出如下:

E:\java\Combination.class

E:\java\Combination.java

E:\java\Combination1.class

E:\java\Combination1.java

E:\java\FrameTest$1.class

E:\java\FrameTest.class

E:\java\FrameTest.java

E:\java\game.jar

E:\java\getNum.java

E:\java\Java学习笔记.markdown

E:\java\Jsq$CommandAction.class

E:\java\map0.txt

E:\java\MOMNum.java

E:\java\MyComp.class

E:\java\NumRectangle.class

E:\java\NumRectangle.java

E:\java\Prime

E:\java\Prime.class

E:\java\Prime.java

E:\java\RandomCharNum.class

E:\java\RandomCharNum.java

E:\java\Sum.class

E:\java\Sum.java

E:\java\SuoDemo.class

E:\java\SuoDemo.java

E:\java\TestFrame.class

E:\java\HomeWork\HomeWork.java

E:\java\HomeWork\Thumbs.db

E:\java\m个数中取k个数\Combination.class

E:\java\m个数中取k个数\Combination.java

E:\java\m个数中取k个数\Combination1.class

E:\java\m个数中取k个数\Combination1.java

E:\java\m个数中取k个数\Combination2.java

E:\java\五子棋\GameFrame.class

E:\java\五子棋\GameFrame.java

E:\java\以往习作\KingTetris$timerListener.class

E:\java\小成图排盘\EightDiagram.java

E:\java\年份转干支\HeavenlyStem.class

E:\java\年份转干支\HeavenlyStem.java

E:\java\打包\Game$1.class

E:\java\打包\Game$2.class

E:\java\打包\Game$MyCanvas.class

E:\java\打包\Game.class

找到43个满足条件的文件。

版权声明:本文为博主原创文章,未经博主允许不得转载。

python遍历文件夹下所有文件名中含有指定_Python 遍历目录找出包含指定字符串的文件夹...相关推荐

  1. shell实例第12讲:给定目录找出包含关键字的文件

    #!/bin/bash #作者:魏波 #时间:2017.02.04DIR=$1 KEY=$2 for FILE in $(find $DIR -type f); doif grep $KEY $FIL ...

  2. php获取文件夹下所有文件名(php遍历目录)

    当我对接小发猫API的时候,需要php获取文件夹下所有文件名,我们有时候需要读取目录里面的内容,在 PHP 有多个函数可以获取文件系统目录信息,今天就给大家分享 PHP 遍历目录的三种方法. php获 ...

  3. python读取文件名-Python获取指定文件夹下的文件名的方法

    本文采用os.walk()和os.listdir()两种方法,获取指定文件夹下的文件名. 一.os.walk() 模块os中的walk()函数可以遍历文件夹下所有的文件. os.walk(top, t ...

  4. python下载文件到指定目录-Python获取指定文件夹下的文件名的方法

    本文采用os.walk()和os.listdir()两种方法,获取指定文件夹下的文件名. 一.os.walk() 模块os中的walk()函数可以遍历文件夹下所有的文件. os.walk(top, t ...

  5. python怎么读文件名-Python获取指定文件夹下的文件名

    本文采用os.walk()和os.listdir()两种方法,获取指定文件夹下的文件名. 一.os.walk() 模块os中的walk()函数可以遍历文件夹下所有的文件. os.walk(top, t ...

  6. Python获取指定文件夹下的文件名

    本文采用os.walk()和os.listdir()两种方法,获取指定文件夹下的文件名. 一.os.walk() 模块os中的walk()函数可以遍历文件夹下所有的文件. [python] view ...

  7. python怎么获取所有文件名_python 获取当前文件夹下所有文件名

    os 模块下有两个函数: os.walk() os.listdir() #!/usr/bin/env python # -*- coding: utf-8 -*- import os def file ...

  8. python读取文件夹下特定的文件_python os模块获取指定文件夹下所有文件名

    本文采用os.walk()和os.listdir()两种方法,获取指定文件夹下的文件名. python os模块获取指定文件夹下所有文件名 第一种方法使用os.walk(): os.walk() 方法 ...

  9. python怎么读文件夹下的文件夹-python如何获取当前文件夹下所有文件名详解

    前言 本文主要给大家介绍了关于python获取当前文件夹下所有文件名的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 os 模块下有两个函数: os.walk() os.li ...

最新文章

  1. 区块链共识算法:PoS即权益证明 DPoS委托授权的权益证明
  2. java存款程序_JAVA实现账户取款和存款操作
  3. Mybatis 总结
  4. 异常的分级分类与处理策略
  5. ubuntu的Unity功能安装
  6. 应用实时监控 ARMS 上线用户行为回溯功能
  7. XML生成与解析(DOM、ElementTree)
  8. 【verilog教程】第10篇:verilog代码规范
  9. STM32最小系统使用FlyMcu烧写步骤
  10. 数字信号处理的典型应用
  11. 5G核心网中与用户数据相关的NF功能体UDM、AUSF、PCF、UDR
  12. 【CityEngine教程文档】---01 基础教程
  13. 融云对接php,谈谈微信小程序中首次对接融云WebIM SDK经验
  14. 第11.3节 Python正则表达式搜索支持函数search、match、fullmatch、findall、finditer
  15. 图片打标签labelimg
  16. JS高级 之 RegExp - 正则表达式
  17. 桂林理工大学南宁分校php实训,桂林理工大学南宁分校冶金化工虚拟仿真实验教学中心...
  18. Ubuntu下载中文输入法
  19. 中国地图 echarts china.js 无乱码
  20. U盘/移动硬盘安装CentOS系列系统

热门文章

  1. Introducing the ClearGLASS App on ClearOS
  2. 上Google Adsense个人的一点体验
  3. 5个经典的javascript面试问题
  4. 在Visual Studio中利用NTVS创建Pomelo项目
  5. 《信息检索导论》第七章总结
  6. tcp为什么需要3次握手和3次握手的过程
  7. Linux 下的0 1 2特殊文件描述符~
  8. 饥荒联机版服务器显示错误,小白求问 搭服务器出现这种情况是怎么回事
  9. Linux Select
  10. vue 非es6 写法怎么按须加载_Vue源码必学指南:flow(语法检查)以及rollup(模板打包)...