Advertisement

Python getopt详解与简例

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:PDF


简介:
本文详细解析了Python中的getopt模块使用方法,并提供了多个实例代码供读者参考学习。 ### Python Getopt 模块详解及简单实例 #### 一、引言 在Python中,`getopt`模块主要用于解析命令行参数。这对于编写能够接受命令行参数的脚本非常有用,例如设置脚本的工作目录、指定日志级别等。本段落将详细介绍`getopt`模块的使用方法,并通过具体的例子来帮助理解。 #### 二、Getopt模块概述 `getopt`模块提供了两种主要函数:`getopt()` 和 `gnu_getopt()`。这里主要介绍`getopt()`,它用于处理POSIX风格的选项和参数。 ##### 函数原型: ```python getopt.getopt(args, shortopts, longopts=[]) ``` ##### 参数说明: - **args**: 需要解析的参数列表。通常使用`sys.argv[1:]`来传递,因为`sys.argv[0]`通常是脚本名称,不应被解析。 - **shortopts**: 简写参数列表,由一系列字符组成,每个字符代表一个选项,后面可跟一个冒号表示该选项需要接收一个参数。 - **longopts**: 长参数列表,由一系列字符串组成,每个字符串代表一个选项。如果某个选项需要接收参数,则在其末尾加上等号。 ##### 返回值: - **opts**: 分析出的`(option, value)`列表对,其中`option`是字符串形式的选项,`value`是该选项对应的参数值(如果没有参数,则为空字符串)。 - **args**: 不属于格式信息的剩余命令行参数列表。 #### 三、Getopt示例分析 接下来,我们将通过一个具体的示例来深入了解`getopt`的用法。 假设我们有一个名为`common.py`的脚本,其中包含了一个名为`ParseOptions`的函数,用于解析命令行参数。这个函数使用了`getopt.getopt()`来处理输入。 ##### 函数定义: ```python def ParseOptions(argv, docstring, extra_opts=(), extra_long_opts=(), extra_option_handler=None): try: opts, args = getopt.getopt( argv, hvp:s:x + .join(extra_opts), [help, verbose, path=, signapk_path=, extra_signapk_args=, java_path=, public_key_suffix=, private_key_suffix=, device_specific= ] + extra_long_opts ) except getopt.GetoptError as err: Usage(docstring) print(** Error: , str(err), **) sys.exit(2) path_specified = False for o, a in opts: if o in (-h, --help): Usage(docstring) sys.exit() elif o in (-v, --verbose): OPTIONS.verbose = True elif o in (-p, --path): OPTIONS.search_path = a elif o == --signapk_path: OPTIONS.signapk_path = a elif o == --extra_signapk_args: OPTIONS.extra_signapk_args = shlex.split(a) elif o == --java_path: OPTIONS.java_path = a os.environ[PATH] += (os.path.join(OPTIONS.search_path, bin) + : + os.environ[PATH]) return args ``` 在这个函数中,我们定义了一系列的短选项和长选项。例如,`-p`或`--path`用于设置搜索路径,`-v`或`--verbose`用于开启详细模式等。 ##### 处理未知选项 如果遇到未知选项,则检查是否定义了额外处理方法(`extra_option_handler`)。如果没有定义或者处理失败,则抛出异常并退出程序。 #### 四、使用示例 为了更好地理解如何使用`getopt`模块,我们可以通过以下示例代码来进一步说明: ```python import sys import getopt def main(argv): try: opts, args = getopt.getopt(argv, ho:v, [help, output=, verbose]) except getopt.GetoptError: print(test.py -o -v) sys.exit(2) output = None verbose = False for opt, arg in opts: if opt == -h: print(test.py -o -v) sys.exit() elif opt in (-o, --output): output = arg elif opt in (-v, --verbose): verbose = True print(fOutput file is: {output}) print(fverbose mode is: {verbose}) if __name__ == __main__: main(sys.argv[1:]) ``` 在这个例子中,我们定义了三个选项:`-h`用于显示帮助信息;`-o`或`--output

全部评论 (0)

还没有任何评论哟~
客服
客服
  • Python getopt
    优质
    本文详细解析了Python中的getopt模块使用方法,并提供了多个实例代码供读者参考学习。 ### Python Getopt 模块详解及简单实例 #### 一、引言 在Python中,`getopt`模块主要用于解析命令行参数。这对于编写能够接受命令行参数的脚本非常有用,例如设置脚本的工作目录、指定日志级别等。本段落将详细介绍`getopt`模块的使用方法,并通过具体的例子来帮助理解。 #### 二、Getopt模块概述 `getopt`模块提供了两种主要函数:`getopt()` 和 `gnu_getopt()`。这里主要介绍`getopt()`,它用于处理POSIX风格的选项和参数。 ##### 函数原型: ```python getopt.getopt(args, shortopts, longopts=[]) ``` ##### 参数说明: - **args**: 需要解析的参数列表。通常使用`sys.argv[1:]`来传递,因为`sys.argv[0]`通常是脚本名称,不应被解析。 - **shortopts**: 简写参数列表,由一系列字符组成,每个字符代表一个选项,后面可跟一个冒号表示该选项需要接收一个参数。 - **longopts**: 长参数列表,由一系列字符串组成,每个字符串代表一个选项。如果某个选项需要接收参数,则在其末尾加上等号。 ##### 返回值: - **opts**: 分析出的`(option, value)`列表对,其中`option`是字符串形式的选项,`value`是该选项对应的参数值(如果没有参数,则为空字符串)。 - **args**: 不属于格式信息的剩余命令行参数列表。 #### 三、Getopt示例分析 接下来,我们将通过一个具体的示例来深入了解`getopt`的用法。 假设我们有一个名为`common.py`的脚本,其中包含了一个名为`ParseOptions`的函数,用于解析命令行参数。这个函数使用了`getopt.getopt()`来处理输入。 ##### 函数定义: ```python def ParseOptions(argv, docstring, extra_opts=(), extra_long_opts=(), extra_option_handler=None): try: opts, args = getopt.getopt( argv, hvp:s:x + .join(extra_opts), [help, verbose, path=, signapk_path=, extra_signapk_args=, java_path=, public_key_suffix=, private_key_suffix=, device_specific= ] + extra_long_opts ) except getopt.GetoptError as err: Usage(docstring) print(** Error: , str(err), **) sys.exit(2) path_specified = False for o, a in opts: if o in (-h, --help): Usage(docstring) sys.exit() elif o in (-v, --verbose): OPTIONS.verbose = True elif o in (-p, --path): OPTIONS.search_path = a elif o == --signapk_path: OPTIONS.signapk_path = a elif o == --extra_signapk_args: OPTIONS.extra_signapk_args = shlex.split(a) elif o == --java_path: OPTIONS.java_path = a os.environ[PATH] += (os.path.join(OPTIONS.search_path, bin) + : + os.environ[PATH]) return args ``` 在这个函数中,我们定义了一系列的短选项和长选项。例如,`-p`或`--path`用于设置搜索路径,`-v`或`--verbose`用于开启详细模式等。 ##### 处理未知选项 如果遇到未知选项,则检查是否定义了额外处理方法(`extra_option_handler`)。如果没有定义或者处理失败,则抛出异常并退出程序。 #### 四、使用示例 为了更好地理解如何使用`getopt`模块,我们可以通过以下示例代码来进一步说明: ```python import sys import getopt def main(argv): try: opts, args = getopt.getopt(argv, ho:v, [help, output=, verbose]) except getopt.GetoptError: print(test.py -o -v) sys.exit(2) output = None verbose = False for opt, arg in opts: if opt == -h: print(test.py -o -v) sys.exit() elif opt in (-o, --output): output = arg elif opt in (-v, --verbose): verbose = True print(fOutput file is: {output}) print(fverbose mode is: {verbose}) if __name__ == __main__: main(sys.argv[1:]) ``` 在这个例子中,我们定义了三个选项:`-h`用于显示帮助信息;`-o`或`--output
  • Python 3.7 单爬虫实
    优质
    本教程详细介绍了使用Python 3.7编写简单网页爬虫的过程,适合初学者了解和掌握基本的网络数据抓取技术。 在Python 3.7中编写一个简单的爬虫示例代码如下: ```python import urllib.parse import urllib.request from http import cookiejar url = http://www.baidu.com response1 = urllib.request.urlopen(url) print(第一种方法) # 获取状态码,200表示成功 print(response1.getcode()) ``` 这段代码展示了如何使用Python的`urllib`库来抓取网页内容,并获取HTTP响应的状态码。
  • Python Queue模块
    优质
    本篇文章详细解析了Python中的Queue模块,并提供了实际的应用示例。适合想要深入了解Python队列机制的读者阅读。 在Python中,队列是线程间最常用的交换数据的形式。Queue模块提供了进行队列操作的功能,尽管它使用简单方便,但如果使用不当还是会出现一些问题。 创建一个“队列”对象: ```python import Queue q = Queue.Queue(maxsize=10) ``` `Queue.Queue`类是一个同步实现的队列。你可以设置这个队列为无限长度或有限长度。通过在构造函数中指定可选参数maxsize来设定队列的最大容量,如果maxsize小于1,则表示该队列没有大小限制。 将一个值放入队列: ```python q.put(10) ``` 调用`put()`方法可以在线程安全的情况下向队尾添加一个新的项目。此函数有两个可选参数,默认情况下只需要提供要插入的item即可。
  • Java Spring AOP易示
    优质
    本教程深入浅出地解析了Spring框架中的AOP(面向切面编程)原理及应用,并通过简单实例展示了如何在Java项目中实现功能解耦和代码优化。适合初学者入门学习。 本段落主要介绍了Java Spring AOP的详细解析及简单实例,可供需要的朋友参考。
  • Python实现小波变换的明示
    优质
    本篇文章详细介绍了如何使用Python编程语言来实现小波变换,并提供了清晰易懂的代码示例和解释。适合初学者快速掌握该技术的核心概念与应用方法。 本段落详细介绍了如何用Python实现小波变换的一个简单例子,并通过示例代码进行了深入讲解。内容对于学习或工作中需要了解这一技术的人来说具有一定的参考价值。希望有兴趣的朋友能跟随文章一起学习和探索。
  • Python爬虫案
    优质
    本书通过丰富的实例详细讲解了使用Python进行网页数据抓取的技术和方法,适合初学者及有一定基础的读者深入学习。 本篇博文主要讲解Python爬虫实例,重点包括爬虫技术架构以及组成爬虫的关键模块:URL管理器、HTML下载器和HTML解析器。以下是简单的爬虫架构程序入口函数(爬虫调度段): ```python #coding:utf8 import time, datetime from maya_Spider import url_manager, html_downloader, html_parser, html_outputer class Spider_Main(object): # 初始化操作 def __init__(self): # 设置url管理器 self.urls = url_manager.Url ``` 注意:原文中的`maya_Spider`模块需要根据实际情况替换为实际使用的文件或库名称。
  • Python爬虫案
    优质
    《Python爬虫案例详解》一书深入浅出地讲解了如何使用Python编写网络爬虫程序,通过丰富的实战案例带领读者掌握数据抓取、解析及存储技巧。 Python爬虫是一种能够自动访问互联网并抓取网页数据的程序,在数据挖掘、信息检索、网络监控等多个领域具有广泛应用。本段落档详细介绍了Python爬虫的基础实例,涵盖了技术架构和关键模块的设计与实现,对学习和实践Python爬虫技术具有一定参考价值。 讲解了爬虫的技术架构。一个基本的爬虫通常包括以下几个组件:URL管理器、HTML下载器、HTML解析器以及HTML输出器。这些组件协同工作,完成从互联网上抓取数据到存储整个流程。 接下来深入探讨组成爬虫的关键模块: 1. URL管理器:作为调度中心,负责管理待抓取和已抓取的URL。实例中使用两个集合分别存放新的URL(new_urls)和旧的URL(old_urls),以避免重复抓取。当有新URL添加时,会检查是否已经存在于任一集合内;如果不存在,则将其加入到new_urls集合中。在爬虫运行过程中,定时从new_urls集合移除并转移到old_urls集合中,确保唯一性。 2. HTML下载器:负责获取网页的实际内容,在实例里使用Python标准库urllib来实现,并用user_agent伪装浏览器访问以避免被网站封禁。通过构造请求并向服务器发送后接收响应完成页面下载;通常返回的是HTML源码,为后续解析提供基础数据。 3. HTML解析器:从已下载的网页源代码中提取所需信息,在示例里使用html.parser模块进行操作,根据设定规则对标签内容进行处理并抽取特定信息。这一步骤涉及查找特定元素和属性,并从中获取有价值的数据,从而简化复杂HTML结构中的有用数据。 4. HTML输出器:负责收集解析后的数据并将它们存储或展示出来,在实例中将这些数据保存至本地文件或数据库等目标位置。根据实际需求设计该模块的功能,可以是简单的文本形式也可以采用更复杂的储存方式。 整个爬虫的调度程序包含在主类Spider_Main内,初始化时配置上述组件;从一个根URL开始工作后,通过定时器计算总耗时来评估效率,并依次完成获取新URL、下载HTML内容、解析提取数据及将结果提交给输出器等步骤。这些基础知识对于初学者理解爬虫原理和实践者设计高效稳健的程序都至关重要。
  • Python实现密钥加密密实
    优质
    本篇文章详细介绍了如何使用Python进行密钥加密和解密的具体步骤及代码示例。适合对数据安全有兴趣的技术爱好者学习参考。 本段落详细介绍了如何使用Python实现密钥密码的加密与解密功能。内容对学习或工作具有一定的参考价值,有需要的朋友可以查阅一下。
  • getopt.h 中的 getopt 和 getopt_long
    优质
    《getopt.h中的getopt和getopt_long》:本文将介绍在C语言中用于解析命令行参数的标准库函数getopt和其扩展版getopt_long的功能、用法及实例,帮助开发者更高效地处理程序输入。 在Windows 10 和 Visual Studio 2019 下使用 getopt 及 getopt_long 函数时需要注意,getopt 和 getopt_long 是 GNU C 中的函数。
  • Python GUI编程实
    优质
    《Python GUI编程实例详解》一书深入浅出地介绍了使用Python进行图形用户界面开发的技术和方法,通过丰富的实例帮助读者掌握Tkinter、PyQt等库的应用技巧。 本段落主要介绍了Python GUI编程,并通过完整示例分析了使用tkinter模块进行GUI图形界面编程的相关实现技巧。有兴趣的读者可以参考此内容。