Python做自动化项目的总结

最近项目上有自动化要求,我选择了用Python,对自己的代码能力提高很有帮助。

  • 第一:学东西最快最有效的方法是“用起来”。
  • 第二:通过将实际问题细分力度,用Python逐一解决,这样学到的知识掌握的深。
  • 第三:不要忘了归纳总结,网上信息泛滥,有个地方能记录你的学习进度和学习心得,对IT从业人员是必要的技能。

心灵鸡汤说完了,这里我记录一下这次项目中用到的Python知识点和重点。

Python如何中途退出一个函数?

sys.exit(0)

Python如何判断文件(夹)存在?

os.path.exists(root_dir)

Python如何改变目录?

os.chdir(new_path)

Python如何延时?

time.sleep(30)

Python如何执行系统命令?

os.system('mycommand.bat')

Python如何判断文件扩展名?

file.endswith(".html")

Python如何删除一个文件夹?

shutil.rmtree(file_path, True ...

more ...

每天定时从Mainframe下载gdg文件再上传到ftp

今天要完成一个任务:

任务描述

Step1:从大机(mainframe)上下载指定的gdg最新的2个generation到本地C:\gdg目录下。
Step2:将这些下载下来的gdg文件发送到指定的ftp服务器的/topath/users-4/目录下面,每天新建一个目录yyyymmdd用来存放当天的gdg文件。
Step3:不用OPC等大机上面的scheduling工具,用windows的“计划任务”功能即可。

这里是实现以上任务的批处理脚本ftpscript.bat。放在C:\ftpscript.bat,之后在windows计划任务里面添加每天定时运行即可。

@echo off
rem 指定mainframeIP
set mfIP=xxx.xxx.xxx.xxx
rem 指定mainframe用户名
set mfUser=IBMUSER
rem 指定 ...
more ...

BAT批处理现学现用

上篇说的是本人在实现报表自动化过程中用到的VBS知识,这篇我打算用来总结在此过程中用到的批处理知识。

批处理里面如何实现延时?

rem 巧妙地利用windows自带的ping命令来达到延时的目的
ping.exe /n 1 127.1>nul
批处理的用户输入校验模块 [这里是校验日期,格式:yyyymm]
@echo off
:input_module
echo Please enter date here:
set /p yyyymm=^<format:yyyymm^> (example:201301):
echo %yyyymm%|findstr ^[1-2][0-9][0-9][0-9][0-1][0-9 ...
more ...

VB Script现学现用

这几天需要实现一个报表自动化的功能,用到批处理BAT和VBS的知识,属于现学现用。各种谷歌百度。都说好记性不如烂笔头,我打算花一篇的篇幅来记录用到的VB Script知识,另外用一篇的篇幅来记录用到的BAT批处理知识。希望可以积少成多。
(注意:VBS跟VBA不是一个概念,VBA只有在开启Excel的时候才能运行。)

dim user_id, yyyymm, to_dte_       '定义变量
user_id = wscript.arguments(0)     '接收批处理传过来的第一个参数
CAP_user_id = Ucase(user_id)       '转换成大写
Select Case Mid(yyyymm,5,2)        'Select/Case的用法  字符串截取的方法                                         
Case "01"   
    ' do something here  
Case "02"                          'If-Then的用法,闰年的判断方法,=,<>,Mod的用法 ...
more ...

mainframe平台报表自动化方案实现

这几天,客户提了一个需求如下:

<1>每个月初需要在本地(Windows XP)看上一个月的一个报表。
<2>如果可以随时查看之前任意月份的报表,那更好。
<3>报表数据来源于Mainframe上的表A和表B,需要join操作。
<4>报表结果以excel呈现,有必要的一些格式化和公式以及美化等excel常规操作。

经研究,实现方案如下:

<1>用bat批处理与mainframe交互,交互方式为ftp。包括将本地job送到JES2运行,包括将表A和表B的数据从mainframe上下载到本地。
<2>用vbs处理后期的excel,包括数据导入,单元格格式,公式操作,excel美化,用户提示等等常规的office操作。
<3>用bat批处理来调用vbs,这样bat批处理就把mainframe和vbs串在了一起。

方案优势:

选择这个方案是从用户易用性考虑,客户不需要安装任何软件。批处理和vbs以及excel在xp下面都是自带的。用户只需双击,然后输入查看的报表月份即可。

方案设计图

我用word简单地画了一个方案图: report automation on mainframe
代码就不放上来了。

more ...