精华内容
下载资源
问答
  • 它可以查找符合特定规则的文件路径名。跟使用windows下的文件搜索差不多。查找文件只用到三个匹配符:"*", "?", "[]"。"*"匹配0个或多个字符;"?"匹配单个字符...

    转载:https://blog.csdn.net/csapr1987/article/details/7469769

    glob模块是最简单的模块之一,内容非常少。用它可以查找符合特定规则的文件路径名。跟使用windows下的文件搜索差不多。查找文件只用到三个匹配符:"*", "?", "[]"。"*"匹配0个或多个字符;"?"匹配单个字符;"[]"匹配指定范围内的字符,如:[0-9]匹配数字。

    glob.glob

      返回所有匹配的文件路径列表。它只有一个参数pathname,定义了文件路径匹配规则,这里可以是绝对路径,也可以是相对路径。下面是使用glob.glob的例子:

     

    1. import glob  
    2.   
    3. #获取指定目录下的所有图片  
    4. print glob.glob(r"E:\Picture\*\*.jpg")  
    5.   
    6. #获取上级目录的所有.py文件  
    7. print glob.glob(r'../*.py') #相对路径  

    import glob #获取指定目录下的所有图片 print glob.glob(r"E:\Picture\*\*.jpg") #获取上级目录的所有.py文件 print glob.glob(r'../*.py') #相对路径

     

    glob.iglob

      获取一个可编历对象,使用它可以逐个获取匹配的文件路径名。与glob.glob()的区别是:glob.glob同时获取所有的匹配路径,而 glob.iglob一次只获取一个匹配路径。这有点类似于.NET中操作数据库用到的DataSet与DataReader。下面是一个简单的例子:

     

    1. import glob  
    2.   
    3. #父目录中的.py文件  
    4. f = glob.iglob(r'../*.py')  
    5.   
    6. print f #<generator object iglob at 0x00B9FF80>  
    7.   
    8. for py in f:  
    9.     print py  

    import glob #父目录中的.py文件 f = glob.iglob(r'../*.py') print f #<generator object iglob at 0x00B9FF80> for py in f: print py

     

     

    自己做的实验

    会将/home/sun/ptest也打印出来

    import glob
    f = glob.glob(r'/home/sun/ptest/*.py')
    print f

    直接打印文件名称

    import glob
    f = glob.glob(r'*.py')
    print f

     

    展开全文
  • globpython自己带的一个文件操作相关模块,内容不多,可以它查找符合自己目的的文件。?12345678910 # encoding: UTF-8 import glob as gb import cv2 #Returns a list of all folders with pa

    Python遍历

    在之前的数独项目中,进行图像处理的时候用到了遍历文件夹下所有的图片。主要是利用glob模块。glob是python自己带的一个文件操作相关模块,内容不多,可以用它查找符合自己目的的文件。

    ?12345678910 # encoding: UTF-8 import glob as gb import cv2   #Returns a list of all folders with participant numbers img_path = gb.glob("numbers\\*.jpg")  for path in img_path:   img = cv2.imread(path)    cv2.imshow('img',img)   cv2.waitKey(1000) 
    

    C++遍历

    1. opencv自带函数glob()遍历

    OpenCV自带一个函数glob()可以遍历文件,如果用这个函数的话,遍历文件也是非常简单的。这个函数非常强大,人脸识别的时候用这个函数应该会比用at.txt更加方便。一个参考示例如下。

    12345678910111213141516171819202122232425262728293031 #include<opencv2\opencv.hpp> #include<iostream>   using namespace std; using namespace cv;   vector<Mat> read_images_in_folder(cv::String pattern);   int main() {   cv::String pattern = "G:/temp_picture/*.jpg";   vector<Mat> images = read_images_in_folder(pattern);     return 0;   }   vector<Mat> read_images_in_folder(cv::String pattern) {   vector<cv::String> fn;   glob(pattern, fn, false);     vector<Mat> images;   size_t count = fn.size(); //number of png files in images folder   for (size_t i = 0; i < count; i++)   {     images.push_back(imread(fn[i]));     imshow("img", imread(fn[i]));     waitKey(1000);   }   return images; } 
    
    1. 自己写一个遍历文件夹的函数

    在windows下,没有dirent.h可用,但是可以根据windows.h自己写一个遍历函数。这就有点像是上面的glob的原理和实现了。

    ?12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 #include<opencv2\opencv.hpp> #include<iostream> #include <windows.h> // for windows systems   using namespace std; using namespace cv;   void read_files(std::vector<string> &filepaths,std::vector<string> &filenames, const string &directory);   int main() {   string folder = "G:/temp_picture/";   vector<string> filepaths,filenames;   read_files(filepaths,filenames, folder);   for (size_t i = 0; i < filepaths.size(); ++i)   {     //Mat src = imread(filepaths[i]);     Mat src = imread(folder + filenames[i]);     if (!src.data)       cerr << "Problem loading image!!!" << endl;     imshow(filenames[i], src);     waitKey(1000);   }   return 0;   }   void read_files(std::vector<string> &filepaths, std::vector<string> &filenames, const string &directory) {   HANDLE dir;   WIN32_FIND_DATA file_data;     if ((dir = FindFirstFile((directory + "/*").c_str(), &file_data)) == INVALID_HANDLE_VALUE)     return; /* No files found */     do {     const string file_name = file_data.cFileName;     const string file_path = directory + "/" + file_name;     const bool is_directory = (file_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0;       if (file_name[0] == '.')       continue;       if (is_directory)       continue;       filepaths.push_back(file_path);     filenames.push_back(file_name);   } while (FindNextFile(dir, &file_data));     FindClose(dir); } 
    
    1. 基于Boost

    如果电脑上配置了boost库,用boost库来实现这一功能也是比较简洁的。为了用这个我还专门完全编译了Boost。

    然而只用到了filesystem。

    #include <boost/filesystem.hpp> #include<iostream> #include<opencv2\opencv.hpp>   using namespace cv; using namespace std; using namespace boost::filesystem;   void readFilenamesBoost(vector<string> &filenames, const string &folder);   int main() {   string folder = "G:/temp_picture/";   vector<string> filenames;   readFilenamesBoost(filenames, folder);   for (size_t i = 0; i < filenames.size(); ++i)   {     Mat src = imread(folder + filenames[i]);       if (!src.data)       cerr << "Problem loading image!!!" << endl;     imshow("img", src);     waitKey(1000);   }   return 0; }   void readFilenamesBoost(vector<string> &filenames, const string &folder) {   path directory(folder);   directory_iterator itr(directory), end_itr;   string current_file = itr->path().string();     for (; itr != end_itr; ++itr)   {     if (is_regular_file(itr->path()))     {       string filename = itr->path().filename().string(); // returns just filename       filenames.push_back(filename);     }   } } 
    
    展开全文
  • globpython自己带的一个文件操作相关模块,内容不多,可以它查找符合自己目的的文件。 # encoding: UTF-8 import glob as gb import cv2 #Returns a list of all folders with participant numbers img_path = ...

    1.Python

    主要是利用glob模块。glob是python自己带的一个文件操作相关模块,内容不多,可以用它查找符合自己目的的文件。

    # encoding: UTF-8
    import glob as gb
    import cv2
    
    #Returns a list of all folders with participant numbers
    img_path = gb.glob("numbers\\*.jpg") 
    for path in img_path:
        img  = cv2.imread(path) 
        cv2.imshow('img',img)
        cv2.waitKey(1000)
    

    2.C++ and OpenCV

    OpenCV自带一个函数glob()可以遍历文件,如果用这个函数的话,遍历文件也是非常简单的。

    #include<opencv2\opencv.hpp>
    #include<iostream>
    
    using namespace std;
    using namespace cv;
    
    vector<Mat> read_images_in_folder(cv::String pattern);
    
    int main()
    {
        cv::String pattern = "G:/temp_picture/*.jpg";
        vector<Mat> images = read_images_in_folder(pattern);
    
        return 0;   
    }
    
    vector<Mat> read_images_in_folder(cv::String pattern)
    {
        vector<cv::String> fn;
        glob(pattern, fn, false);
    
        vector<Mat> images;
        size_t count = fn.size(); //number of png files in images folder
        for (size_t i = 0; i < count; i++)
        {
            images.push_back(imread(fn[i]));
            imshow("img", imread(fn[i]));
            waitKey(1000);
        }
        return images;
    }
    

    3.C++

    int main(int argc, char **argv)
    {
    	if (argc != 2)
    	{
    		std::cout << "Usage: images file path error" << std::endl;
    	}
       struct _finddata_t  file;
       intptr_t  If;
       std::string path,tempPath;    //遍历文件夹中的所有图片
       path = path.assign(argv[1]);  //文件的路径
       tempPath = path.assign(argv[1]); 
       if ((If = _findfirst(path.append("\\*").c_str(), &file)) == -1) //不加*也会报错
       {
    	   std::cout << "Not find image file" << std::endl;
       }
       else
       {	  
    	   while (_findnext(If, &file) == 0)
    	   {
    		  std::cout << "file name: " << path.substr(0, path.length() - 1) << file.name << std::endl;
    		  cv::Mat srcImage = cv::imread(tempPath  + "\\" + file.name, 0);//第一个图片路径..是打不开的
    		  if (!srcImage.data)
    		  {
    			  printf("picture read error"); 
    			  continue;
    		  }
    		  cv::Mat vecImage(srcImage.rows, srcImage.cols, CV_8UC3, cv::Scalar::all(0));
    		  /*
    		   对图像进行处理操作
    		  */
    		  std::string  resFiles = "resluts/"; //将矢量化图片保存在reslut文件中 
    		  cv::imwrite(resFiles + file.name, vecImage); // 遍历所有图片并写出
    	   }
       }
       _findclose(If);
    	system("PAUSE");
    	return 0;
    }
    

    4.C++ and Boost

    用到了Boost库中的filesystem

    #include <boost/filesystem.hpp>
    #include<iostream>
    #include<opencv2\opencv.hpp>
    
    using namespace cv;
    using namespace std;
    using namespace boost::filesystem;
    
    void readFilenamesBoost(vector<string> &filenames, const string &folder);
    
    int main()
    {
        string folder = "G:/temp_picture/";
        vector<string> filenames;
        readFilenamesBoost(filenames, folder);
        for (size_t i = 0; i < filenames.size(); ++i)
        {
            Mat src = imread(folder + filenames[i]);
    
            if (!src.data)
                cerr << "Problem loading image!!!" << endl;
            imshow("img", src);
            waitKey(1000);
        }
        return 0;
    }
    
    void readFilenamesBoost(vector<string> &filenames, const string &folder)
    {
        path directory(folder);
        directory_iterator itr(directory), end_itr;
        string current_file = itr->path().string();
    
        for (; itr != end_itr; ++itr)
        {
            if (is_regular_file(itr->path()))
            {
                string filename = itr->path().filename().string(); // returns just filename
                filenames.push_back(filename);
            }
        }
    }
    
    展开全文
  • /usr/bin/env python #coding=gbk __author__ = 'lc' import MySQLdb import glob import os import sys DB_HOST = "localhost" DB_USER = "root" DB_PWD = "root" DB_DATABASE = "database" CHARVAR_PATH = "di
    #!/usr/bin/env python
    #coding=gbk
    __author__ = 'lc'
    
    import MySQLdb
    import glob
    import os
    import sys
    
    DB_HOST = "localhost"
    DB_USER = "root"
    DB_PWD = "root"
    DB_DATABASE = "database"
    CHARVAR_PATH = "dir"
    NOT_EXIST_FILE = "./not_exist_character.txt"
    EXPORT_SQL_FILE = "./character_var.sql"
    
    def check_arg():
        if len(sys.argv) != 2:
            print("参数不正确! 用法: convert_charvar.py 变量目录")
            exit(1)
            
        global CHARVAR_PATH
        CHARVAR_PATH = sys.argv[1]
        
    def convert_and_dump():
        check_arg()
        print("正在执行转换, 请稍候......")
        
        try:
            fp = None        
            cursor = None
            sql_fp = open(EXPORT_SQL_FILE, "w")
            not_exist_fp = open(NOT_EXIST_FILE, "w")
            dbConn = MySQLdb.connect(DB_HOST, DB_USER, DB_PWD, DB_DATABASE)
            cursor = dbConn.cursor()
    
            for varFile in glob.glob(CHARVAR_PATH + os.sep + "*.txt"):
                fileName = os.path.basename(varFile)
                charName = fileName.rsplit(".txt")[0]
                sql = "select id from tbl_character_info where name = '{}'".format(charName)
                resNum = cursor.execute(sql)
    
                if resNum == 0:
                    print("玩家 {} 在数据库角色表中查询不存在".format(charName))
                    not_exist_fp.write(charName + "\n")
                    continue
    
                row = cursor.fetchone()
                charid = row[0]
                fp = open(varFile, "r")
                varLst = fp.readlines()
                fp.close()
    
                for var in varLst:
                    oneLst = var.split("=")
    
                    if len(oneLst) != 2:
                        continue
                    
                    name = oneLst[0].strip()
                    value = oneLst[1].strip(" \n\"")
                    INSERT_PREFIX = "insert into tbl_character_var (charid, name, value) values({}, '{}', '{}');    #角色名:{}"
                    sql = INSERT_PREFIX.format(charid, name, value, charName)
                    sql_fp.write(sql + "\n")
    
        except Exception as exp:
            print("严重错误: " + str(exp))
            
        else:
            print("执行完毕, sql语句保存在" + EXPORT_SQL_FILE + ", 不存在的玩家名保存在" + NOT_EXIST_FILE)
            
        finally:
            dbConn.close()
            sql_fp.close()
            not_exist_fp.close()
            
            if cursor is not None:
                cursor.close()        
    
            if fp is not None:
                fp.close()
                
    if __name__ == "__main__":    
        convert_and_dump()
    

    展开全文
  • glob中支持的通配符有三种:   *匹配0个或多个字符   ?仅匹配一个字符   []匹配指定范围内的字符,如[0-9]匹配数字 图片中的文件夹作为例子进行演示 glob.glob的使用: ...
  • glob 文件名模式匹配,不用遍历整个目录判断每个文件是不是符合。 例子: 文件结构如下,使用glob读取files下vgg开头且后面为单个数字的文件 代码如下,?表示匹配单个字符 from glob import glob for name in glob...
  • python发现文件夹下所有的jpg文件,并且安装文件排放的顺序输出 glob模块是最简单的模块之一,内容非常少。它可以查找符合特定规则的文件路径名。跟使用windows下的文件搜索差不多。查找文件只用到三个匹配符:”...
  • 以下图中文件夹为例,分三种情况获取文件名 一、获取指定文件夹下所有文件名 使用os.listdir()实现 os.listdir(path):返回指定...globpython自己带的一个文件操作相关模块,它可以查找符合自己目的的文件
  • 它可以查找符合特定规则的文件路径名。跟使用windows下的文件搜索差不多。查找文件只用到三个匹配符:”*”, “?”, “[]”。”*”匹配0个或多个字符;”?”匹配单个字符;”[]”匹配指定范围内的字符,如:[0-9]...
  • python遍历文件夹中的所有jpg文件

    万次阅读 热门讨论 2018-03-06 11:06:52
    python发现文件夹下所有的jpg文件,并且安装文件排放的顺序输出 glob模块是最简单的模块之一,内容非常少。它可以查找符合特定规则的文件路径名。跟使用windows下的文件搜索差不多。查找文件只用到三个匹配符:...
  • 用python遍历文件夹的时候,由于文件夹会包括文件夹的情况,很多人刚开始会想到的是递归遍历,于是去网上搜索遍历的方法,结果出现很大一串代码,递归调用,结果试了半天还晕头转向,还需要加以验证,其实python有一...
  • 最近做了一个将dicom文件转化为mhd文件的任务,由于要进行批量转化所以遍历文件夹必不可少,刚开始学习python编程,所以把过的模块用法记录下来,以加深记忆,方便查阅,最后参考前人的博客做了glob生成器的补充,...
  • 今天的文章是介绍如何 Python 去定位特定类型的文件,会讲到字符串匹配文件名定位特定文件以及顺带介绍一下遍历目录树的函数,通过今天的这一部分以及之前文章讲到的文件获取属性的操作,可以做很多有意思的事情...
  • Python标准库glob模块

    2019-11-05 15:13:39
    最近做了一个将.dat文件转化为.nc文件的任务,由于要进行批量转化所以遍历文件夹必不可少,刚开始学习python编程,所以把过的模块用法记录下来,以加深记忆,方便查阅。 glob模块的主要方法就是glob,该方法返回...
  • globpython自己带的一个文件操作相关模块,它可以查找符合自己目的的文件,类似于Windows下的文件搜索,支持通配符操作。 glob 文件名模式匹配,不用遍历整个目录判断每个文件是不是符合。 glob模块的主要...
  • Python】之glob库介绍

    2021-02-03 00:14:54
    glob 文件名模式匹配,不用遍历整个目录判断每个文件是不是符合。它可以查找符合特定规则的文件路径名。跟使用windows下的文件搜索差不多。可以使用*、?、[ ]这三种通配符对路径中的文件进行匹配。   &...
  • 教你如何利用python进行基本的文件和文件夹操作,重点介绍了如何使用os, shutil和glob模块进行常见的文件和文件夹操作,如遍历,删除文件和查找文件。   打开文件 如果你要对一个文件进行读或写,你必需先...
  • python标准库之glob介绍

    2020-06-28 16:58:08
    glob文件名模式匹配,提供了一个函数用于从目录通配符搜索中生成文件列表,不用遍历整个目录判断每个文件是不是符合。 1 通配符 星号(*)匹配零个或多个字符 import glob for name in glob.glob('./test/*'): ...
  • glob 文件名模式匹配,不用遍历整个目录判断每个文件是不是符合。 1、通配符 星号(*)匹配零个或多个字符 import glob for name in glob.glob('dir/*'): print (name) dir/file.txt dir/file1.txt dir/file2.txt ...
  • 小编我精心准备了个小结,教你如何利用python进行基本的文件和文件夹操作,并重点介绍了如何使用os, shutil和glob模块进行常见的文件和文件夹操作,如遍历,删除文件和查找文件。打开文件如果你要对一个文件进行读或...
  • 今天的文章是介绍如何 Python 去定位特定类型的文件,会讲到字符串匹配文件名定位特定文件以及顺带介绍一下遍历目录树的函数,通过今天的这一部分以及之前文章讲到的文件获取属性的操作,可以做很多有意思的事情...
  • I 通过glob模块遍历一个目录下面的所有文件glob接收shell中常文件名模式语法:“?”代表任何单个字符,*代表任意字符 1 import glob 2 import os 3 import sys 4 5 dirname = '/usr/lib/python...
  • 今天的文章是介绍如何 Python 去定位特定类型的文件,会讲到字符串匹配文件名定位特定文件以及顺带介绍一下遍历目录树的函数,通过今天的这一部分以及之前文章讲到的文件获取属性的操作,可以做很多有意思的事情...

空空如也

空空如也

1 2 3
收藏数 41
精华内容 16
关键字:

python用glob遍历文件

python 订阅