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

使用python脚本执行系统命令

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

下载的图片分类大概是这样的



每个文件夹代表一类图片,比如说Sample037对应字母a等等。

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

import subprocess

subprocess.call(['netstat','-a'])


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

import subprocess

subprocess.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脚本了。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: