用 Python 实现文件查找(BIF实现及队列实现)

(1)利用内置函数实现文件查找

1、功能:返回用户输入的文件的绝对路径

2、设计思路:

  • (1)用户输入在哪个盘进行查找
  • (2)遍历此盘文件,若为目标文件则输出
  • (2)无此文件,则输出错误

3、实验代码

#查找某个目录下的目标文件
import os #引入操作系统模块
import sys #用于标准输入输出 def search(path,name): for root, dirs, files in os.walk(path): # path 为根目录
if name in dirs or name in files:
flag = 1 #判断是否找到文件
root = str(root)
dirs = str(dirs)
return os.path.join(root, dirs)
return -1 path = input('请输入您要查找哪个盘中的文件(如:D:\\\)')
print('请输入您要查找的文件名:')
name = sys.stdin.readline().rstrip() #标准输入,其中rstrip()函数把字符串结尾的空白和回车删除
answer = search(path,name)
if answer == -1:
print("查无此文件")
else:
print(answer)

4、运行结果展示

1、无此文件

2、有此文件



(2)队列实现文件查找

1、设计思路

定义队列 ALLFiles 存储所有文件

while ALLFiles 不为空
if pop 为目录
then 将目录内所有文件入队
elesif pop 为文件
then if 为目标文件
then break
end
输出路径

2、实验代码

#查找某个目录下的目标文件
import os #引入操作系统模块
import sys #用于标准输入输出
import easygui as g #引入图形用户界面 def search(path1,name):
Allfiles = [] #创建队列
Allfiles.append(path1) while len(Allfiles) != 0: #当队列中为空的时候跳出循环
path =Allfiles.pop(0) #从队列中弹出首个路径
if os.path.isdir(path): #判断路径是否为目录
ALLFilePath =os.listdir(path) #若是目录,遍历将里面所有文件入队
for line in ALLFilePath:
newPath =path +"\\"+line #形成绝对路径
Allfiles.append(newPath)
else: #如果是一个文件,判断是否为目标文件
target = os.path.basename(path)
if target == name:
return path
return -1 path = g.enterbox(msg='请输入文件目录(如:D:DEV)')
name = g.enterbox(msg='请输入您要查找的文件名:')
answer = search(path,name)
if answer == -1:
g.msgbox("查无此文件",'查找错误')
else:
g.msgbox(answer,'返回路径')

3、运行结果

  • 有此文件





  • 无此文件





遇到问题及解决方法

  • 编译错误:



    解决方法:os.path.join() 的参数是 str 型, 添加代码 root = str(root) dirs = str(dirs)
  • 缩进错误:



    解决方法:为了看看它能输出多少,我等待了五分钟,它还没有结束;结果把if name in dirs or name in files:语句重新打了一遍就可以了,应该是缩进的错误
  • 答案错误:把相同目录下的其他文件也输出出来了



    解决方法:



    os.walk() 的 dirs 参数 才是返回目录,将print(os.path.join(root, files))改为print(os.path.join(root, dirs))
  • 答案错误:输出的路径不是绝对路径



    解决方法:将for root, dirs, files in os.walk('/'): # / 为根目录 改为 for root, dirs, files in os.walk(path): # path 为根目录

心得体会

  • 代码虽然很短,但是完成它的过程很不容易
  • Python 中 循环和 if 分支后不用加大括号,但是需要 : ,而且缩进要十分注意
  • Python 不用定义类型并不代表变量没有类型,使用变量前需要先赋值
  • 序列包含 列表、元组和字符串

    列表主要标志是[ ],是一个打了激素的数组,什么东西都能往里装

    元组和字符串都是戴上了枷锁的列表;元组标志是( ) 和 ,,其元素不可改变;字符串不能轻易修改

    三者共同点:

    1、都可以通过索引得到一个元素

    2、默认索引值从零开始

    3、可以通过分片的方式得到一个范围内元素的集合

    4、有很多共同操作符(重复操作符、拼接操作符、成员关系操作符等)
  • Python 中有很多已经定义好的 BIF ,编写代码时很方便
  • 经常会把输出 print() 打成 printf()

用 Python 实现文件查找的更多相关文章

  1. python实现文件查找功能,excel写入功能

    因为要丛UE文档中过滤关键字来统计解码时间,第一次自己完成了一个自动化统计的小工具,用起来颇有成就感. UE文件的内如如下: 需要丛这份关键字中过滤红色标记的两个关键字,取 一个关键字的最后一位,和取 ...

  2. 用Python和FFmpeg查找大码率的视频文件

    用Python和FFmpeg查找大码率的视频文件 本文使用Python2.7, 这个工作分两步 遍历目录下的视频文件 用ffprobe获取是视频文件的码率信息 用ffprobe 获取json格式的视频 ...

  3. Python实现单词查询&文件查找

    最近学C++ Primer,做到第十二章有个习题.要求针对英文文本,对于用户想搜索的单词,打印出该单词在文本中出现的总次数,单词所出现行号及对应的行内容:单词在一行内出现多次,只打印该行一次.C++的 ...

  4. python操作文件案例二则

    前言 python 对于文件及文件夹的操作. 涉及到 遍历文件夹下所有文件 ,文件的读写和操作 等等. 代码一 作用:查找文件夹下(包括子文件夹)下所有文件的名字,找出 名字中含有中文或者空格的文件 ...

  5. Python之文件读写

    本节内容: I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 I/O在计算机中是指Input ...

  6. Python操作文件、文件夹、字符串

    Python 字符串操作 去空格及特殊符号 s.strip().lstrip().rstrip(',') 复制字符串 #strcpy(sStr1,sStr2) sStr1 = 'strcpy' sSt ...

  7. Python之文件与目录操作及压缩模块(os、shutil、zipfile、tarfile)

    Python中可以用于对文件和目录进行操作的内置模块包括: 模块/函数名称 功能描述 open()函数 文件读取或写入 os.path模块 文件路径操作 os模块 文件和目录简单操作 zipfile模 ...

  8. 【转】Python之文件与目录操作(os、zipfile、tarfile、shutil)

    [转]Python之文件与目录操作(os.zipfile.tarfile.shutil) Python中可以用于对文件和目录进行操作的内置模块包括: 模块/函数名称 功能描述 open()函数 文件读 ...

  9. 【转】Python之文件读写

    [转]Python之文件读写 本节内容: I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 ...

随机推荐

  1. Java 获取路径的几种方法 - 转载

    1.获取当前类所在的“项目名路径” String rootPath = System.getProperty("user.dir"); 2.获取编译文件“jar包路径”(反射) S ...

  2. org.apache.log4j.Logger用法

    在应用程序中添加日志记录总的来说基于三个目的 :监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作:跟踪代码运行时轨迹,作为日后审计的依据:担当集成开发环境中的调试器的作用,向文 ...

  3. Angularjs注入拦截器实现Loading效果

    angularjs作为一个全ajax的框架,对于请求,如果页面上不做任何操作的话,在结果烦回来之前,页面是没有任何响应的,不像普通的HTTP请求,会有进度条之类. 什么是拦截器? $httpProvi ...

  4. ALS算法 (面试准备)

    ALS算法描述: 1.ALS算法用来补全用户评分矩阵.由于用户评分矩阵比较稀疏,将用户评分矩阵进行分解,变成V和U的乘积.通过求得V和U两个小的矩阵来补全用户评分矩阵. 2.ALS算法使用交替最小二乘 ...

  5. IFE 2015_spring task0002 自学记录

    JavaScript数据类型及语言基础 1. 判断arr是不是一个数组,返回一个bool值. 首先javascript有5大基本数据类型:Undefined,Null,Boolean,Number和S ...

  6. 牛客练习赛13D

    定义一个数字为幸运数字当且仅当它的所有数位都是4或者7.比如说,47.744.4都是幸运数字而5.17.467都不是.现在想知道在1...n的第k小的排列(permutation,https://en ...

  7. 51nod 1383 母函数

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1383 一眼望去,不就是硬币兑换吗,母函数或者dp,直接暴力dp就A了,不 ...

  8. OC-常见归档总结

    /*****  该文一共总结了以下六种文件操作   1.NSKeyedArchiver. 2.对类对象进行归档 <NSCoder>协议 3.文件管理类 NSFileManger  4.对文 ...

  9. The Saltwater Room

    I opened my eyes last night and saw you in the low light 昨夜我睁开眼,看见你在昏暗的灯光下 Walking down by the bay, ...

  10. PostgreSQL恢复误操作

    根据德歌的博客自己实践一下: 找到要恢复的前一个事物ID,然后回滚到那个时候: 使用pg_xlogdump分析XLOG -bash-4.1$ pg_xlogdump 00000002000000000 ...