Chinaunix首页 | 论坛 | 博客
  • 博客访问: 236730
  • 博文数量: 27
  • 博客积分: 832
  • 博客等级: 准尉
  • 技术积分: 336
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-20 20:47
文章存档

2012年(9)

2010年(10)

2009年(7)

2008年(1)

我的朋友

分类: Python/Ruby

2009-09-28 22:00:06

 
关键字: python, 命令行

在公司的文件服务器上,很深的一层目录里面有一个Excel文件,他就是我们组的日报文件。

 

他的名字会随时间的变化而变化,所以我们有办法把它设置成我桌面的一个快捷方式。

于是这回的需求便是写一个脚本,他会根据今天的时间,打开相对应的日报。

 

具体主要有下面这两个功能:

1. "-d"  "--directory"参数

不指定他的时候,就直接打开日报。

指定的时候就打开日报所在的文件就夹,因为他的目录下面还有其他组的日报,我有时候想偷窥一下。

 

2. "-o"  "--offset"参数

不指定他的时候,就直接打开当前时间对应的日报。

指定的时候,打开往后退相应小时数(该参数对应的值)的时间对应的日报,

因为我经常需要第二天早晨补充上一天的日报。

 

显然要干这么一件事情,我需要解析命令行参数了。

 

Python中解析命令行参数有下面三种方法。

1. 使用sys.argv

    跟标C的main函数一样。

 

2. 使用getopt

    跟Unix/Linux上的C函数库getopt一样

 

3. 使用OptionParser,在optparser模块中

    这个是python在模仿C的基础上,增加的。对于"复杂的场合",使用他会更"强大,易用"一些。

 

这回就是用第三种方法,多说无益,详细内容直接查看python的文档。这里直接上程序如下:

 

下面程序中除了解析命令行参数以外, 其他的知识点有:

1.  如何引用全局变量。

2.  执行系统命令。

 

 

Python代码 复制代码
  1. #! /usr/bin/python   
  2. #coding:utf-8   
  3.   
  4. __author__="wjason"  
  5. __date__ ="$2009-6-10 11:32:31$"  
  6.   
  7. import os,time,datetime   
  8. import sys   
  9.   
  10. def openFile(dest):   
  11.     cmd = 'cmd /C call "'+dest+'"''"'  
  12.     #os.popen(cmd)  
  13.     #os.system(cmd)  
  14.     import subprocess  
  15.     subprocess.Popen(cmd, shell=True)  
  16. def openFolder(dest):  
  17.     cmd = 'cmd /C call explorer "'+dest+'"'  
  18.     #os.popen(cmd)   
  19.     #os.system(cmd)   
  20.     import subprocess   
  21.     subprocess.Popen(cmd, shell=True)   
  22.   
  23. class RiBaoUtils():       
  24.     def __init__(self, hour_delay = 0):   
  25.         self.__hour_delay = hour_delay   
  26.         self.__ct= datetime.datetime.now()   
  27.         self.__ct = self.__ct - datetime.timedelta(hours= self.__hour_delay)   
  28.   
  29.     def generatePsvRiBaoFileName(self):   
  30.         #startDay = self.__ct + datetime.timedelta(days= (0 - week))   
  31.         startDay = self.__ct   
  32.   
  33.         # 'UtilityTeam use full year name, for example 2009.'   
  34.         year =  startDay.strftime("%Y")   
  35.         month =  startDay.strftime("%m")   
  36.   
  37.         #example: 'UtilityTeam作業報告_20090622.xls'   
  38.         filename = "PSV日報_"+year+"." + month + ".xls"  
  39.         return filename   
  40.   
  41. # -------------------------------- config start  --------------------------------------   
  42. offset= 8.5  
  43. wantDir = False  
  44.   
  45. def configOption():   
  46.     from optparse import OptionParser   
  47.     usage = "usage: %prog [-option]"  
  48.     parser = OptionParser(usage)   
  49.     parser.add_option("-d""--directory", dest = "wantDir", action = "store_true",   
  50.                       help = "use this option to open the directory.")   
  51.     parser.add_option("-o""--offset", type="float", dest="offset",   
  52.                       help = "use this option to set the offset(delay) hours")   
  53.   
  54.     (options, args) = parser.parse_args()   
  55.   
  56.     if options.wantDir:   
  57.         global wantDir   
  58.         wantDir = options.wantDir   
  59.   
  60.     if  ( not options.offset == None):   
  61.         global offset   
  62.         offset= options.offset   
  63.   
  64. # -------------------------------- config end    --------------------------------------   
  65.   
  66. if __name__ == "__main__":   
  67.     configOption()   
  68.   
  69.     # this off set is hours   
  70.     rbutil = RiBaoUtils(offset)   
  71.   
  72.     #psv team, 4 jason   
  73.     path = "\\\\......\\日報\\"  
  74.     dest = path + rbutil.generatePsvRiBaoFileName()   
  75.        
  76.     if wantDir:   
  77.         openFolder(path)   
  78.     else:   
  79.         openFile(dest)  
阅读(11469) | 评论(0) | 转发(0) |
0

上一篇:Python 文件操作

下一篇:python中的时间

给主人留下些什么吧!~~