python 查找相应图片数据路径并调用exe程序

今天在处理实验室采集的图像数据的时候, 需要调用师兄的一个程序, 而师兄是将这个程序所需要处理的图片文件夹的路径写死在了exe文件里面, 导致每次计算一个文件夹中的图像数据的时候, 都需要重新编译一次, 非常费劲。
比较懒的我,于是想到, 是不是可以使用python, 将我所需要处理的图像文件夹提取出来, 然后把他们作为参数, 传递给师兄的程序呢?
于是我将师兄的exe程序重新编译了一下, 使他能够支持, 命令行参数。
然后使用python 的文件路径处理功能, 得到了相应的文件夹下, 所需要处理的文件夹的路径名称,使用python的 subprocess 模块的 Popen 调用exe, 实现了自动处理文件夹内子文件夹中图像数据的功能。
相应的待处理的文件夹格式:
这里写图片描述

代码如下:

#coding:utf-8
'''
Created on 2016-3-25
description : 当前处理文件夹格式: 20160323 图片数据
        ie, 有一个大的文件夹, 进入之后, 有left, right 两个相机分别拍摄的图像数据的文件夹
        进入 left 文件夹, 下面有多个文件夹, 每个文件夹中存放拍摄的不同工位的图像数据, right 也类似
@author: ThinkPad User
'''

import os
import subprocess

# 查找所需要处理的所有子文件夹的路径
class CFindDirs():
    '''
    classdocs
    '''
    ExeName = ''
    __targetDir = ''

    def __init__(self):
        '''
        Constructor
        '''
        self.ExeName = r'E:\system dir\Desktop\core_functions_dll\Release\core_functions_dll.exe'
        self.__targetDir = 'E:\\system dir\\Desktop\\20160323_816_960\\'

    ##########################################
    ### 输入一个合法路径
    ### 输出路径下所有文件夹的名称列表
    ######################################### 
    def __getSubDirs(self, path):
        if os.path.isdir(path) == False:
            print '当前输入路径有错误, 请重新设置'
            return
        listDirs = os.listdir(path)
        listDirs_filter = []
        for subdir in listDirs:
            subdir_path = os.path.join(path, subdir)
            if os.path.isdir(subdir_path) == False:
                continue
            listDirs_filter += [subdir_path]
        return listDirs_filter

    ##########################################
    ### 输出路径下 所有图像文件夹的名称
    #########################################     
    def setTargetDirPaths(self):
        if os.path.isdir(self.__targetDir) == False:
            print '当前输入路径有错误, 请重新设置'
            return
        listDirs = []
        listDirsLeft = self.__getSubDirs(self.__targetDir + 'left')
        listDirsRight = self.__getSubDirs(self.__targetDir + 'right')
        listDirs += listDirsLeft
        listDirs += listDirsRight
        return listDirs


if __name__ == '__main__':
    s = CFindDirs()
    listPath = s.setTargetDirPaths()
    for subdir in listPath:
        print '当前正在处理:' + subdir
        cmd = '\"' + s.ExeName + '\"' + ' ' + '\"' + subdir + '\"'
        ## 并发调用
        subprocess.Popen(cmd)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值