argparse

argparse with multiple optional flags in one dash

余生长醉 提交于 2020-12-31 05:54:02
问题 Is it possible to associate multiple flags with a single dash in argparse as in this standard Linux argument style? tar -xvf some_filename.tar 回答1: This will do the trick. Most likely, you didn't include the short form for each argument. import argparse parser = argparse.ArgumentParser(description='... saves many files together...') parser.add_argument('--extract', '-x', action='store_true', help='extract files from an archive') parser.add_argument('--verbose', '-v', action='store_true', help

Python argparse allow combined flags

天涯浪子 提交于 2020-12-24 12:36:05
问题 Is it possible for argparse to parse combined flags like this: app.py -bcda something In this case, I would want something to be set to -a and the rest would be stored True. Basically: app.py -b -c -d -a something I know most programs allow this, e.g. grep -rEw , but how hard would it be to do this with with argparse? Edit: The answer is that it comes out-of-the-box. I didn't even bother to try it. 回答1: You can achieve this with store_const: parser = argparse.ArgumentParser() parser.add

Python 命令行库的大乱斗

旧城冷巷雨未停 提交于 2020-12-18 17:34:15
当你想实现一个命令行程序时,或许第一个想到的是用 Python 来实现。比如 CentOS 上大名鼎鼎的包管理工具 yum 就是基于 Python 实现的。 而 Python 的世界中有很多命令行库,每个库都各具特色。但我们往往不知道其背后的设计理念,也因此在选择时感到迷茫。这些库的作者为何在重复造轮子,他是从哪个角度来考虑,来让命令行库“演变”到一个新的更好用的形态。 为了能够更加直观地感受到命令行库的设计理念,在此之前,我们不妨设计一个名为 calc 的命令行程序,它能: 支持 echo 子命令,对输入的字符串做处理来输出若不提供任何选项,则输出原始内容若提供 --lower 选项,则输出小写字符串若提供 --upper 选项,则输出大写字符串 支持 eval 子命令,针对输入调用 Python 的 eval 函数,将结果输出(作为示例,我们不考虑安全性问题) argparse argparse 作为 Python 的标准库,可能会是你想到第一个命令行库。 argparse 的设计理念就是提供给开发者最细粒度的控制。换句话说,你需要告诉它必不可少的细节,比如参数的类型是什么,处理参数的动作是怎样的。 在 argparse 的世界中,需要: 设置解析器,作为后续定义参数和解析命令行的基础。如果要实现子命令,则还要设置子解析器。 定义参数,包括名称、类型、动作、帮助等

Python中的序列化和反序列化

喜你入骨 提交于 2020-12-18 06:55:28
为什么要序列化 内存中的字典、列表、集合以及各种对象,如何保存到一个文件中。 设计一套协议,按照某种规则,把内存中的数据保存到文件中,文件是一个个字节序列。所以必须把数据额转换为字节序列,输出到文件,这就是序列化,反之,从文件的字节 序列恢复到内存中,就是反序列化。 1、定义 Serialization系列化,将内存中对象存储下来,把他变成一个个字节。二进制。 deSerialization反序列化,将文件的一个个字节到内存中。 序列胡保存到文件就是持久化。 可将数据序列化后持久化,或者网络传输,也可以将文件中或者网络接受到的字节序列反序列化。 2、pickle库 Python中的序列化、反序列化模块 dumps对象序列化为bytes对象 dump对象序列化到文件对象,就是存入到文件。 loads从bytes对象反序列化。 load对象反序列化,从文件读取数据. ## import pickle filename = 'ser' x= 'a' y = '100' z = '100' with open(filename,'wb') as f: pickle.dump(x,f) pickle.dump(y,f) pickle.dump(z,f) with open(filename,'rb')as f: for _ in range(3): a = pickle.load(f)

计算机视觉-基于内容的图像检索

断了今生、忘了曾经 提交于 2020-12-16 13:01:31
1、什么是基于内容的图像检索 1、构建基于内容的图像检索系统步骤 (1)定义你的图像描述符: 在这个阶段你需要决定你想描述的图像的哪个方面。 你对图像的颜色感兴趣吗? 图像中物体的形状? 或者你想表征纹理? (2)特征提取和索引您的数据集: 现在您已经定义了图像描述符,您的工作是将此图像描述符应用于数据集中的每个图像,从这些图像提取特征并将特征写入存储(例如,CSV文件,RDBMS ,Redis等),以便稍后可以比较它们的相似性。 此外,您需要考虑是否将使用任何专门的数据结构来促进更快的搜索。 (3)定义您的相似性度量: 我们现在有一个(可能是指数)特征向量的集合。 但你如何比较它们的相似性呢? 常用选项包括欧几里得距离,余弦距离和 距离,但实际选择高度依赖于(1)数据集和(2)您提取的特征类型。 (4)搜索: 最后一步是执行实际搜索。 用户将向系统提交查询图像(例如从上传表单或通过移动应用程序),并且您的工作将(1)从该查询图像中提取特征,然后(2)应用您的相似性函数进行比较该查询的功能已针对已编入索引的功能。 从那里,你只需根据你的相似度函数返回最相关的结果。 2、CBIR和机器学习/图像分类有何不同 (1)机器学习包括使计算机完成诸如预测,分类,识别等智能人工任务的方法。此外,机器学习管理算法,使计算机能够执行这些智能任务 而不需要明确编程 。

Argparse shortcut option for combining other options

一个人想着一个人 提交于 2020-12-14 07:20:10
问题 Let's say I have an input file option and an output file option. How can I create an option that combines the two? For example: $ ./my_script.py -i input.txt -o output.txt could be combined as: $ ./my_script.py --io input_output.txt You might say that I could do -io to combine both options, but -io filename is a shortcut for -i -o filename , not -i filename -o filename . I thought that it might be possible to add dest=('input', 'output') to my .add_argument() call, but that raised an error

Python argparse

烂漫一生 提交于 2020-11-21 15:48:56
怎样让自己写的脚本看上去更加的专业,当然是有 --help 或者 -h 这个功能。 Python自带的argparse 模块能够很容易的帮我们实现这个功能。 直接上代码: import argparse VERSION = (0, 2) __version__ = '.'.join(map(str, VERSION[0:2])) __description__ = 'HTTP Proxy Server in Python' __author__ = 'Abhinav Singh' __author_email__ = 'mailsforabhinav@gmail.com' __homepage__ = 'https://github.com/abhinavsingh/proxy.py' __license__ = 'BSD' def main(): parser = argparse.ArgumentParser( description='proxy.py v%s' % __version__, epilog='Having difficulty using proxy.py? Report at: %s/issues/new' % __homepage__ ) parser.add_argument('--hostname', default='127.0.0.1', help

Python argparse 模块参考手册

送分小仙女□ 提交于 2020-11-15 00:19:25
argparse 是 Python 标准库中用来解析命令行参数和选项的模块,其是为替代已经过时的 optparse 模块而生的,该模块在 Python2.7 中被引入。argparse模块的作用是用于解析命令行参数。 创建解析器 使用 argparse 解析命令行参数时,首先需要创建一个解析器,创建方式如下所示: import argparse parser = argparse.ArgumentParser() ArgumentParser 的原型如下所示: class ArgumentParser(self, prog=None, usage=None, description=None, epilog=None, version=None, parents=[], formatter_class=<class 'argparse.HelpFormatter'>, prefix_chars='-', fromfile_prefix_chars=None, argument_default=None, conflict_handler='error', add_help=True) ArgumentParser对象的参数都为关键字参数: prog : 程序的名字,默认为sys.argv[0],用来在help信息中描述程序的名称。 >>> parser = argparse