今天在公司搞了半天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()判断某个文件或路径是否存在。

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐