懒人的python——一次执行多条linux命令

今天在公司搞了半天EE2I,一直在敲相同的命令累死了。每次运行ee2i.sh temp命令后,都要到cd到某个目录下执行下一个shell脚本。做完一次后又要删除临时文件。总之,重复工作很多,我的指甲都敲累了。所以晚上回到家就写了个类似的python脚本来自动化执行这些讨厌的重复工作,也顺便多学点python的知识。

 

  1. import os  
  2. import sys  
  3. import shutil  
  4. import subprocess  
  5.   
  6. if __name__ == '__main__':  
  7.     e2iDir = 'e2i'  
  8.     tempFileName = 'temp'      
  9.     tempDir = os.path.join(e2iDir, tempFileName)  
  10.     lintResultDir = 'lintResult'  
  11.     if os.path.exists(tempDir):  
  12.         shutil.rmtree(tempDir)  
  13.     else:  
  14.         #Only for test  
  15.         os.mkdir(tempDir)         
  16.   
  17.     if os.path.exists(lintResultDir):  
  18.         shutil.rmtree(lintResultDir)  
  19.     else:  
  20.         #Only for test  
  21.         os.mkdir(lintResultDir)  
  22.   
  23.     # The commands to excute  
  24.     ee2iCmd = ['./product/bin/testapp', tempFileName]  
  25.     lintCmd = ['ls', '-R'] #XLINT_XXXX.sh  
  26.   
  27.     cmdList = []  
  28.     cmdList.append(ee2iCmd)  
  29.     cmdList.append(lintCmd)  
  30.       
  31.     # Run all commands once.  
  32.     for oscmd in cmdList:  
  33.         subprocess.call(oscmd)  

说明:

由于家里没有公司的开发环境,上面的这段代码只是个原型,主要是将几条工作中要反复执行的命令串起来执行。

总结:

1) 删除包含子目录的文件夹不能用os.rmdir(),而应该用shutil.rmtree();

2) subprocess.call()的入参数可以是个列表,列表的第一个元素代表命令字,后面的都是命令的参数;

3)使用os.path下的一个函数可以简化路径的操作,比如os.path.join连接路径,os.path.exists()判断某个文件或路径是否存在。

 

2 .不用  for 循环 

# coding: UTF-8
import sys
reload(sys)
sys.setdefaultencoding('utf8')

import subprocess
import os
import commands

#os.system('cmd1 && cmd2')
cmd1 = "cd ../"
cmd2 = "ls"
cmd = cmd1 + " && " + cmd2

#如下两种都可以运行
subprocess.Popen(cmd, shell=True)
subprocess.call(cmd,shell=True)
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值