1
0
mirror of https://github.com/apachecn/lmpythw-zh.git synced 2025-05-28 12:02:19 +00:00
lmpythw-zh/ex4.md
wizardforcel e1744d15a3 ex4
2017-08-02 09:49:41 +08:00

55 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 练习 4处理命令行参数
> 原文:[Exercise 4: Dealing with Command Line Arguments](https://learncodethehardway.org/more-python-book/ex4.html)
> 译者:[飞龙](https://github.com/wizardforcel)
> 协议:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/)
> 自豪地采用[谷歌翻译](https://translate.google.cn/)
在你能处理本书的第一部分之前,你需要完成一些简单的黑魔法,教你如何使用 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 参数解析库?有没有你喜欢的?
+ `argparse``sys.argv`相比,主要优势是什么。
+ 在项目启动方法中,你可以改进什么?有什么可以去掉的事情吗?