笨办法学 Python · 续 练习 4:处理命令行参数

练习 4:处理命令行参数

原文:Exercise 4: Dealing with Command Line Arguments

译者:飞龙

协议:CC BY-NC-SA 4.0

自豪地采用谷歌翻译

在你能处理本书的第一部分之前,你需要完成一些简单的黑魔法,教你如何使用 Python 中的命令行参数。

传统上我们称这种黑魔法为“spike”。该术语来自于一个小型测试项目,涵盖了更大的流程或项目的所有元素。这个小型测试黑魔法“spike”通过一切手段,来确保你可以使用它。spike 的目的是,通过排练来了解如何使用一些新的库或工具,然后真正在你的项目中使用它。

这也是第一个具有“挑战性”的练习。挑战性旨在让你了解如何做某事,然后你可以看看我如何做的,并与你的工作进行比较。我不会先给你代码,并且你需要把它写出来。你不再是初学者了。你现在正在阅读一个挑战,然后你必须解决它。

警告

仔细阅读这个警告!你不应该在 45 分钟内完成完整的发行版软件。45 分钟的时间限制是让你尽快开始,并且不要担心你会做错事情。它是你工作的助推器,而不是测试。这意味着,如果你遵循 45 分钟的时间框架,然后暂停,因为你认为,你不能完成一个伟大的、美丽的作品,你就是做错了。你应该看看,“我们来看看我能在45分钟内完成什么”。这些练习是开放式的,因为不同的人在给定的时间内完成不同的工作量。你只是使用时间约束,来找出你的工作方式,而不是弄清楚你是一个糟糕的程序员还是一个伟大的程序员。

挑战练习

你要编写两个小的 Python 脚本,它们使用两种方法来测试处理命令行参数:

  • 普通的旧式sys.argv,像往常一样。
  • Python 的argparse包,用于更花式的参数处理。

你的测试脚本应该能够处理以下情况:

  • 通过--help-h获得帮助。
  • 至少有三个参数是标志,这意味着它们不需要一个额外的参数,只是将它们放在命令行上就可以了。
  • 至少有三个参数是选项,这意味着,它们会在你的脚本中接受一个参数并将一个变量设为它。
  • 额外的“位置”参数,这是文件的列表,在所有--风格参数的末尾,并能处理终端通配符*/.txt

因为这个练习是一个 spike,你应该这样,如果你在测试过程中感到痛苦,你可以放弃它并尝试另一件事。开始尝试用sys.argv解决这个问题,然后如果你不能想出来,尝试使用argparse

记住,这是一个45分钟的定时练习,你需要坚持下去。你还必须跟踪你做的所有事情来开始。这个练习的目的是,弄清楚如何继续以自己的方式开始一个项目。甚至在你开始之前,你是否在劝阻自己?你是否不知道你的文本编辑器在哪里或如何使用它?写下来,然后弄清楚如何去除这个障碍。

但是,不要将这个严格的45分钟练习与失败混淆。你正在尝试在45分钟内做任何事情。如果你的技术水平是这样的,你完成了一个ex4.py文件,没有别的,那么你在45分钟内做了一些事情。然后,你应该看看为什么所做的一切都是开始编写这个文件,弄清楚下一步需要做什么,然后尝试另一个45分钟的流程。

答案

为了防止你作弊,所有答案的代码都在本书的项目网站 http://bit.ly/lmpthwsolve 上,该网站托管在 https://github.com/ 上。而不是将代码包含在这里,所以你想作弊的时候,只是稍微看一下它,你就必须去查看项目,并访问ex4目录,看看我是如何实现这个黑魔法的。你还会发现我的笔记,我是如何开始,以及改进。

警告

如果你遇到了障碍,回到第三部分,使用我提供的 Early Coders 中的流程。你需要列出一个清单,执行它,并检查你所做的事情。就是这样。

研究性学习

  • 有多少其他的 Python 参数解析库?有没有你喜欢的?
  • argparsesys.argv相比,主要优势是什么。
  • 在项目启动方法中,你可以改进什么?有什么可以去掉的事情吗?
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,504评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,434评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,089评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,378评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,472评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,506评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,519评论 3 413
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,292评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,738评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,022评论 2 329
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,194评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,873评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,536评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,162评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,413评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,075评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,080评论 2 352

推荐阅读更多精彩内容