使用python脚本执行系统命令

来源:互联网 发布:java重载的内部调用 编辑:程序博客网 时间:2024/05/16 08:49

最近在弄验证码识别小工具,下了一大堆数据集,要给每个目录分类改名,作为一个以编程为信仰的人,怎么能手动一个一个重命名呢?!为此我想起了学习Unix时的shell编程。。捣鼓了半天,一会是$忘记添加,一会是数组的奇葩表达。。总而言之真的用不来shell编程,最后想了想还是python以脚本语言著称,写这种简单的系统脚本应该是易如反掌吧~说干就干,我拿出了压箱底的Python CookBook,这真是本好书啊,很多python的奇淫巧技都能在这本书上找到较为系统规范的讲解。下面就介绍一下我是怎么解决问题的了。

下载的图片分类大概是这样的
这里写图片描述

每个文件夹代表一类图片,比如说Sample037对应字母a等等。
我的目的就是将每个文件夹名称改为对应的字母,说起来简单做起来…如果你熟悉的话还是很简单。。这里主要利用了python的subprocess库,

import subprocesssubprocess.call(['netstat','-a'])

像这样就能执行一些系统调用,函数会将命令传给底层的os.execve()系统调用。如果想由shell终端来解释命令,可以加上shell=True参数,但是如果如果传入的命令是依赖于用户输入德华,这样做有风险,可能会让恶意用户有可乘之机。

import subprocesssubprocess.call(['netstat','-a'],shell=True)

最后简单的调用mv命令就能很快的将文件夹批量改名。需要注意Windows系统下该文件夹名命令为ren。

alphas = "abcdefghijklmnopqrstuvwxyz"for i in range(37,63):    dirName = r'我的目录\Sample0'+str(i)    newName = str(alphas[i-37])    print ("oldName:%s,newName : %s"%(dirName,newName))    subprocess.call(['mv',dirName,newName],shell=True)

最后就完成了目的~
这里写图片描述

小结

虽然做的事情很简单,但是这让我对python方便快捷的特性有了更深的认识,再也不想看到shell脚本了。。。

0 0