`

python练习贴07 解析命令行参数

阅读更多

在公司的文件服务器上,很深的一层目录里面有一个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.  执行系统命令。

 

 

#! /usr/bin/python
#coding:utf-8

__author__="wjason"
__date__ ="$2009-6-10 11:32:31$"

import os,time,datetime
import sys

def openFile(dest):
    cmd = 'cmd /C call "'+dest+'"'
    #os.popen(cmd)
    #os.system(cmd)
    import subprocess
    subprocess.Popen(cmd, shell=True)

def openFolder(dest):
    cmd = 'cmd /C call explorer "'+dest+'"'
    #os.popen(cmd)
    #os.system(cmd)
    import subprocess
    subprocess.Popen(cmd, shell=True)

class RiBaoUtils():    
    def __init__(self, hour_delay = 0):
        self.__hour_delay = hour_delay
        self.__ct= datetime.datetime.now()
        self.__ct = self.__ct - datetime.timedelta(hours= self.__hour_delay)

    def generatePsvRiBaoFileName(self):
        #startDay = self.__ct + datetime.timedelta(days= (0 - week))
        startDay = self.__ct

        # 'UtilityTeam use full year name, for example 2009.'
        year =  startDay.strftime("%Y")
        month =  startDay.strftime("%m")

        #example: 'UtilityTeam作業報告_20090622.xls'
        filename = "PSV日報_"+year+"." + month + ".xls"
        return filename

# -------------------------------- config start  --------------------------------------
offset= 8.5
wantDir = False

def configOption():
    from optparse import OptionParser
    usage = "usage: %prog [-option]"
    parser = OptionParser(usage)
    parser.add_option("-d", "--directory", dest = "wantDir", action = "store_true",
                      help = "use this option to open the directory.")
    parser.add_option("-o", "--offset", type="float", dest="offset",
                      help = "use this option to set the offset(delay) hours")

    (options, args) = parser.parse_args()

    if options.wantDir:
        global wantDir
        wantDir = options.wantDir

    if  ( not options.offset == None):
        global offset
        offset= options.offset

# -------------------------------- config end    --------------------------------------

if __name__ == "__main__":
    configOption()

    # this off set is hours
    rbutil = RiBaoUtils(offset)

    #psv team, 4 jason
    path = "\\\\......\\日報\\"
    dest = path + rbutil.generatePsvRiBaoFileName()
    
    if wantDir:
        openFolder(path)
    else:
        openFile(dest)

 

 

 

 

 

 

分享到:
评论
1 楼 wjason 2009-09-28  
代码中有我拷贝的痕迹。。。。。。

相关推荐

    Python-easyargs一个python模块用于轻松处理命令行参数

    easyargs:一个python模块用于轻松处理命令行参数

    python 如何利用argparse解析命令行参数

    主要介绍了python 利用argparse解析命令行参数的步骤,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下

    Python中最好用的命令行参数解析工具(argparse)

    Python 本身就提供了三个命令行参数解析模块,我这里罗列一下它们的大致情况供你了解。 getopt,只能简单的处理命令行参数 optparse,功能强大,易于使用,可以方便地生成标准的、符合Unix/Posix 规范的命令行说明...

    python解析命令行参数的三种方法详解

    主要介绍了python解析命令行参数的三种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    python 命令行参数

    python 命令行参数

    Python命令行参数解析库Commando.zip

    Commando 灵感来自于 Python 的 optparse 模块 以及 JewelCli Java 库,是一个用来定义以及解析 命令行参数的Python工具包。 标签:Commando

    Python、argparse和命令行参数

    在我的博客文章的Python脚本中广泛使用了命令行参数,甚至可以说,这个博客上98%的文章都使用了命令行参数。 2.为什么我们使用命令行参数? 如前所述,命令行参数在运行时为程序提供了更多信息。 这使我们可以在不...

    Python 获得命令行参数的方法(推荐)

    本篇将介绍python中sys, getopt模块处理命令行参数 如果想对python脚本传参数,python中对应的argc, argv(c语言的命令行参数)是什么呢? 需要模块:sys 参数个数:len(sys.argv) 脚本名: sys.argv[0] 参数1: sys...

    Python 命令行参数sys.argv

    您可能感兴趣的文章:python的pytest框架之命令行参数详解(上)python获取命令行输入参数列表的实例代码Python 获得命令行参数的方法(推荐)Python解析命令行读取参数–argparse模块使用方法Python中的命令行参数...

    Python-imgcat用Python命令行直显图片

    Python-imgcat用Python命令行直显图片

    python处理命令行参数.pdf

    Python 有两个内建的模块用于处理命令行参数,一个是 getopt,《Deep in python》一书中也有提到,只能简单处理命令行参数;另一个是 optparse,它功能强大,而且易于使用,可以方便地生成标准的、符合 Unix/Posix ...

    python 命令行传入参数实现解析

    创建 test.py 文件,代码如下: #!/usr/bin/python # -*- coding: gbk -*- import sys print sys.argv if __name__=='__main__': print Program name, sys.argv[0] ... 您可能感兴趣的文章:Python命令行参数解析

    python采用getopt解析命令行输入参数实例

    本文实例讲述了python采用getopt解析命令行输入参数的方法,分享给大家供大家参考。 具体实例代码如下: import getopt import sys config = { "input":"", "output":".", } #getopt三个选项,第一个一般为sys...

    python实现读取命令行参数的方法

    本文实例讲述了python读取命令行参数的方法。分享给大家供大家参考。具体分析如下: 如果想对python脚本传参数,python中对应的argc, argv(c语言的命令行参数)是什么呢? 需要模块:sys 参数个数:len(sys.argv) 脚...

    python命令行解析.docx

    在Python程序中,可以使用sys模块中的argv变量来获取这些参数,例如: python命令行解析全文共4页,当前为第1页。 ```python import sys print(sys.argv) ``` 运行上述程序时,如果在命令行中输入: ``` pyth

    Python-Pythonpy可看作是命令行版的瑞士军刀

    Pythonpy 可看作是命令行版的“瑞士军刀”,能在命令行中直接执行任何 Python 指令。

    Python技法:用argparse模块解析命令行选项.doc

    Python技法:用argparse模块解析命令行选项.doc

Global site tag (gtag.js) - Google Analytics