python实现在目录中查找指定文件的方法

本文实例讲述了python实现在目录中查找指定文件的方法。分享给大家供大家参考。具体实现方法如下:

1. 模糊查找

代码如下:
import os

from glob import glob #用到了这个模块

def search_file(pattern, search_path=os.environ['PATH'],
pathsep=os.pathsep):

    for path in
search_path.split(os.pathsep):

       
for match in glob(os.path.join(path, pattern)):

           
yield match

if __name__ == '__main__':

    import
sys

    if
len(sys.argv)<2  or
sys.argv[1].startswith('-'):#sys.argv[0]是当前路径,1开始是后面的参数

       
print 'Use: %s ' % sys.argv[0]

       
sys.exit(1)

    if
len(sys.argv)>2:

       
matchs = list(search_file(sys.argv[1],sys.argv[2]))

    else:

       
matchs = list(search_file(sys.argv[1]))

    print '%d
match' % len(matchs)

    for match in
matchs:

       
print match

2. 指定的文件名精确查找

代码如下:
import os,optparse

#1:精确查找

def search_file(filename, search_path=os.environ['PATH'],
pathsep=os.pathsep):#os.pathsep是分隔符';'

    for path in
search_path.split(os.pathsep):

       
candidate = os.path.join(path, filename)#预选路径

       
if os.path.isfile(candidate):

           
yield os.path.abspath(candidate)
#用生成器可以方便控制返回的数据.可以使用.next()等方法只返回下一个子项

def parse_args():#帮助提示

    usage =
u'''这是一个查找文件夹路径中是否有文件指定文件的脚本,

第一个参数是要找的文件名,第二个是路径'''

    parser =
optparse.OptionParser(usage)

    help =
u'要查找的文件名字'

   
parser.add_option('--filename', help=help)#type='int',

    help =
u'查找的路径多个路径以;分隔'

   
parser.add_option('--path', help=help, default='e:')

    options,
args = parser.parse_args()

    return
options, args

if __name__ == '__main__':

    options,
args = parse_args()

    find_file =
list(search_file(args[0], args[1]))

    if
find_file:

       
for file in find_file:

           
print "Found File at %s" % file

    else:

       
print "Not Found"

例子:在e:/py和e:/phpwww目录下找以a到d开头的.php的文件

E:py>python_cook [a-d]*.php e:/py;e:/phpwww

2 match

e:/phpwwwcurl.php

e:/phpwwwduoxiancheng.php

希望本文所述对大家的Python程序设计有所帮助。

python实现在目录中查找指定文件的方法的更多相关文章

  1. 在eclipse中查找指定文件 [多种方法]

    在eclipse中查找指定文件   1.ctrl+h打开搜索界面 File Search: containing text填*,File name patterns填写hello.*,可以找到hell ...

  2. 在eclipse中查找指定文件

    1.ctrl+h打开搜索界面 File Search: containing text填*,File name patterns填写hello.*,可以找到hello为命名的文件 知道文件类型,查找里 ...

  3. 在eclipse中如何在大量项目中查找指定文件

    在eclipse中如果希望在大量的项目中寻找指定的文件可不是一件轻松的事,还好eclipse提供了强大的搜索功能. 我们可以通过通配符或正则表达式来设定查寻条件,下面是操作示例: ctrl+h 打开搜 ...

  4. 在eclipse中如何在大量项目中查找指定文件(转载)

    转载:http://blog.csdn.net/inowcome/article/details/6699227 在eclipse中如果希望在大量的项目中寻找指定的文件可不是一件轻松的事,还好ecli ...

  5. python从一个目录中复制全部文件图片至另一个目录中,及删除指定目录中的图片

    import shutil import os #目录自己改一下即可,复制 path = "./static/imgs/" new_path = "./static/up ...

  6. python在一堆目录中寻找json文件

    在一个目录下,有好几层目录,里面零零散散存放着几个json文件,我要做的是用python脚本把它们都找出来,一开始就一层一层地找,用os.listdir加上for循环,根据目录树的深度确定for循环的 ...

  7. QT中检索设定目录下所有指定文件的方法

    void MainWindow::on_pushButton_clicked() { QDir dir=QFileDialog::getExistingDirectory(this, tr(" ...

  8. File类之在指定目录中查找文件

    package IoDemo; import java.io.File; /** * @Title:FileDemo2 * @Description:在指定的目录中查找文件 * @author Cra ...

  9. Linux find查找指定文件 按照名称 然后cp拷贝到指定目录且指定文件名

    最近有一个需求,需要将指定目录下的文件(已知文件名)复制到另一个指定的目录且重命名文件. 要求: 在var目录下会定义系统的启动日志相关信息,请查找对应的boot.log文件,并把它备份一份到var/ ...

随机推荐

  1. kafka消费者

    from kafka import KafkaConsumer,TopicPartition import json scrapy_kafka_hosts = ["ip:端口", ...

  2. 配置linux ftp服务器,客户端报list remote folder fail

    XFTP出现列表文件夹失败.主要是因为FTP模式不对,应该为主动连接模式, 可以在设置主机属性 - 选项页签 - 将默认勾选的“使用被动模式”(使用消极模式)的多选框取消...就可以了...

  3. kotlin字符串模板&条件控制

    字符串模版: 小时候都有要求记日记的习惯,下面是一小学生记的日记: 很漂亮的流水账,那细分析一下这些文件其实大体都类似,只有几个不同点: 其实就是地点变了,那对于这种有规律的文字可以采用kotlin的 ...

  4. 2019牛客暑期多校训练营(第一场)E ABBA

    题意问你有多少个长度为2*(n+m)的字符串满足A和B数量相等 且可以分割为n个AB子序列和m个BA子序列 很容易得出前n个A肯定是可以给AB的 后面的m个A给BA 所以当一个字符串满足条件时要满足任 ...

  5. golang打包和部署到centos7

    一.环境说明:VS code 二.编译: set GOOS=linux set GOARCH=amd64 go build -o "packageName"   三.发布 上传到服 ...

  6. json注解及序列化

    一.json框架 市面上的json框架常用的有 jackson.gson.fastjson.大家比较推崇的是fastjson,但是springmvc默认集成的是 jackson. 在一个项目中建议一个 ...

  7. web自动化之前端知识

    下面这种写法只作用于这1个标签:  下面这种也是比较老的写法:  下面是常用的方式:把一个css样式放入到一个文件中,然后引用: 第三方引用的css一般是压缩过的,这样静态资源加载速度会比较快.  如 ...

  8. Xilinx的IP核接口命名说明

    s_axis中的s表示:slave(从); m_axis中的m表示:master(主). axis表示AXI(一种总线协议) Signal.

  9. luogu 3047 [USACO12FEB]附近的牛Nearby Cows 树形dp

    $k$ 十分小,直接暴力维护 $1$~$k$ 的答案即可. 然后需要用父亲转移到儿子的方式转移一下. Code: #include <bits/stdc++.h> #define M 23 ...

  10. 初学mysql 如何删除数据库 如何安装mysql

    廖老师官网链接 这两个表格有个映射关系,就是根据Grade_ID可以在班级表中查找到对应的所有班级: 也就是Grade表的每一行对应Class表的多行,在关系数据库中,这种基于表(Table)的一对多 ...