用python 扩展批处理命令

我想执行批处理,有些参数等的运算,我就找了 命令行传递给批处理的参数

后来找了python执行系统命令四种方法比较

我认为用python 扩展批处理的功能还是比较理想的。我的情况用简单批处理有点难以实现。

先看看我的代码吧:

import os
from os import listdir

Path="pg/"
imagePaths = sorted(list(listdir(Path)))
for imagePath in imagePaths:
    
    basename=os.path.splitext(imagePath)[-2]
    cmd='opencv_createsamples -img pg/'
    cmd= cmd +imagePath
    cmd =cmd + ' -vec pos/' + basename + '.vec'
    cmd = cmd +' -bg neg.txt -w 64 -h 64 -num 100 -maxxangle 0 -maxyangle 0'
    print( cmd)
    folder=os.popen(cmd)

我的代码是对一个目录下所有文件进行图形简单处理。

在pg 目录下的文件是 p1.jpg, 需要处理的命令是

opencv_createsamples -img pg/p1.jpg -vec pos/p1.vec -bg neg.txt -w 64 -h 64 -num 100 -maxxangle 0 -maxyangle 0

我有28个这样的重复处理,上面代码就是print 得到的。在执行命令前,先显示看看。

os.path.splitext(imagePath)[-2] 这个的含义是取文件名,比如p1.jpg => p1

然后输出文件名是 pos/p1.vec

可以参考:python去除扩展名

也可以用 os.path.splitext(imagePath)[0]

我这里重复介绍python 执行命令的几种方式:

os模块
1、os.system(cmd)
在子终端运行系统命令,不能获取命令执行后的返回信息以及执行返回的状态

import os
os.system('date')

2、os.popen(cmd)
不仅执行命令而且返回执行后的信息对象(常用于需要获取执行命令后的返回信息)

import os
nowtime = os.popen('date')
print (nowtime.read())

在这里需要.read 才能返回,我上面的代码就用的这个,但我也没看内容,所以用os.system 也可以。
在上面的文章中介绍了四种方式,我觉得上面这2个比较简单实用。

发布了131 篇原创文章 · 获赞 112 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/leon_zeng0/article/details/103556946
今日推荐