`

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真题及答案解析3练习.pdf

    4. Python 交互式与脚本模式:Python可以在交互模式(命令行直接输入)或脚本模式(通过.py文件运行)中编写和执行代码。 5. Python 序列类型:Python的序列类型包括字符串、列表和元组,不包括字典,因为字典是...

    基于Python的图片转字符画之通过命令行指定图片大小和名称.zip

    掌握如何定义和解析命令行参数对于编写具有交互性的程序至关重要。 5. **文件操作**:项目中会涉及到读取图片文件(可能的格式如.jpg、.png等)以及保存生成的字符画为文本文件。理解Python的`open()`函数和文件...

    孟德昊 32013030141

    - 在`题目二.py`中,孟德昊使用了argparse模块来解析命令行参数,获取正方形的边长,然后计算并输出正方形的面积和周长。argparse是Python提供的用于处理命令行选项、参数和子命令的模块,它允许开发者轻松地定义...

    利用Python实现命令行版的火车票查看器

    `docopt`可以根据文档字符串中定义的格式自动解析命令行参数。 1. **安装`docopt`**: ```shell $ pip3 install docopt ``` 2. **编写命令行接口**:在`tickets.py`文件中定义命令行接口的使用方法及选项,代码...

    Python 核心编程 第二版

     9.6 命令行参数   9.7 文件系统   9.8 文件执行   9.9 永久存储模块   9.10 相关模块   9.11 练习   第10章 错误和异常   10.1 什么是异常   10.2 Python 中的异常   10.3 检测和处理...

    INFC2044练习题(仅供参考源代码私)

    这需要掌握如何在Python等编程语言中接收和解析命令行参数。 3. **文件读取与写入**:系统需要读取指定的文本文件,对文件内容进行处理,然后将结果写入到指定的输出文件中。这涉及到文件I/O操作,如`open()`函数和...

    LearnPython in30minutes

    接下来,打开命令行工具(如Windows的CMD或Mac/Linux的Terminal),输入`python`或`python3`,确认Python已正确安装并可以运行。你可以尝试输入简单的打印语句`print("Hello, Python!")`来验证环境是否正常。 在...

    Python音乐下载器实现语音在线点歌源码

    5. **命令行交互**:为了实现用户与程序的交互,项目可能会使用到Python的`argparse`库来处理命令行参数,或者使用`getpass`库获取用户的语音输入命令。 6. **网络编程**:由于音乐下载功能涉及从互联网获取资源,...

    python2k壁纸批量下载,可选择下载页数

    3. **命令行参数处理**:为了实现用户选择下载页数的功能,程序可能使用了Python的`argparse`库来处理命令行参数,允许用户在运行程序时指定要下载的页数。 4. **文件操作**:下载的壁纸需要保存到本地,这涉及到...

    Learn More Python The Hard Way PDF

    学习如何处理命令行参数,这通常是在开发脚本和应用程序时需要掌握的技能。 d. 熟悉Unix/Linux命令行工具,这些工具是进行数据处理、文本处理和文件搜索时不可或缺的,例如cat、find、grep、cut、sed、sort、...

    Python基础课件.pdf

    - 这样可以确保在任何位置通过命令行使用Python和相关的工具。 ##### 2.4 下载并配置PyCharm - PyCharm是流行的Python集成开发环境(IDE),提供代码补全、调试、单元测试等功能。 - 下载地址:*** * 配置教程包括...

    python-3.6.4.rar

    安装过程中,可以选择自定义安装路径,并勾选“将Python添加到系统路径”以便于命令行环境下直接使用Python。对于初学者,建议同时安装IDLE(集成开发环境)以方便编程练习。而“安装步骤.jpg”将提供详细的图文指南...

    Python核心编程第二版

     9.6 命令行参数   9.7 文件系统   9.8 文件执行   9.9 永久存储模块   9.9.1 pickle和marshal模块   9.9.2 DBM风格的模块   9.9.3 shelve模块   9.10 相关模块   9.11 练习   第10章 ...

    python基础笔记(markdown)

    Python中的函数定义使用`def`关键字,可以有参数和返回值。函数是可重用的代码块,有助于提高代码的模块化和可读性。 **七、模块与包** Python使用模块(module)来组织代码,通过`import`语句引入。包是模块的容器...

    python0基础3天学会

    2. **Python交互式环境**: Python提供了一个交互式环境(IDLE)供初学者练习编程。你可以在其中直接输入代码并立即查看结果。 3. **变量与数据类型**: Python支持多种数据类型,如整型(int)、浮点型(float)、...

    opencv-python颜色轨迹描绘实验1

    `vars(ap.parse_args())`将解析的命令行参数转换为字典格式,方便后续处理。 2. **图像处理操作**: - **腐蚀(Erosion)**:使用`cv2.erode()`函数,它通过去除物体边缘的小像素点来减小物体的大小,有助于消除...

    The_Python_Tutorial_zh-cn.zip_The Python Tutorial

    4. **函数**:Python中的函数定义使用`def`关键字,可以有参数和返回值,支持默认参数、可变参数和关键字参数。 5. **模块与包**:Python的模块化设计使得代码组织有序,通过`import`导入其他模块。包则是模块的...

    用Python的Socket库来实现一个简单的端口扫描器

    在实际应用中,还可以通过添加命令行参数解析、日志记录、错误处理等功能,使这个简单的端口扫描器变得更加实用和强大。Python的argparse模块可以帮助我们处理命令行参数,logging模块则可以方便地进行日志记录。 ...

Global site tag (gtag.js) - Google Analytics