GRAPES MESO模式学习笔记08-3 —— 使用Python改写脚本
之前文章中确认SMS及LoadLeveler都支持Python,下面进行从shell脚本到Python脚本的改写工作。
基本元素
首先分析下模式运行脚本中使用的基本语句和命令:
变量设置
编程语言中最基本的赋值语句
时间计算
模式预报与时间密不可分,需要使用时间增量计算时间,并对格式化输出。
Shell中没有提供这方面的命令,我们使用SMS提供的可执行程序{shell}smsdate{/shell}或者一个用Perl写的脚本{shell}newdate{/shell}来完成实现的计算。
Python的datetime模块完美实现我们需要的时间计算、格式化输出功能。{python}datetime.timedelta{/python}提供增量时间计算功能。
环境变量设置
Shell中使用{shell}export{/shell}命令,Python中使用{python}os.environ{/python}对象
目录文件操作
脚本中最常见的就是IO操作。涉及目录和文件的检测、创建、修改、连接、移动和删除等操作。Shell脚本最强大的功能除了管道就是IO操作了。
Python中也提供大量目录文件IO功能,主要集中在os模块,os.path模块和shutil模块。
目录操作
检测目录
Shell
Python
创建目录
Shell
Python
移动目录
Shell
Python
复制目录
Shell
Python
连接目录
软连接,一般业务脚本中都为软连接
Shell
Python
硬链接
Shell
Python
删除连接使用{python}os.remove{/python}
删除目录
Shell
Python
文件操作
检测
Shell
Python
创建
Python
修改
暂未接触到,以后补充
移动
Shell
Python
拷贝
Shell
Python
连接
与目录相同
Shell
Python
删除
Shell
Python
网络传输
FTP
还没尝试,待以后补充。
运行可执行程序
Shell中直接运行程序。
Python可以使用{python}os.system{/python}或者{python}subprocess{/python}模块。
subprocess模块提供多种启动程序的方式,详情参见文档《17.1. subprocess — Subprocess management》
改写方法
逐条将Shell语句翻译成Python语句。
得到的脚本看起来没有Shell脚本简洁,主要因为Shell脚本有强大的IO命令及魔术般的管道,可以写出简洁的代码。
参考
我改写后的脚本可以在如下项目中找到:
nwpc-grapes-meso-script v0.2
不再详细列出各个脚本。