您的位置:首页 > 编程语言 > Python开发

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

2016-03-25 13:29 513 查看
今天在处理实验室采集的图像数据的时候, 需要调用师兄的一个程序, 而师兄是将这个程序所需要处理的图片文件夹的路径写死在了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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: