04-第2步_处理命令行参数
第2步:处理命令行参数
让你的代码看起来像这样:
#! python3
# mapIt.py - Launches a map in the browser using an address from the
# command line or clipboard.
import webbrowser, sys
if len(sys.argv) > 1:
# Get address from command line.
address = ' '.join(sys.argv[1:])
# TODO: Get address from clipboard.
在程序的#!行之后,需要导入 webbrowser
模块来加载浏览器;以及导入 sys
模块,用于读入可能的命令行参数。 sys.argv
变量保存了程序的文件名和命令行参数的列表。如果这个列表中不只有文件名,那么 len(sys.argv)
的返回值就会大于1,这意味着确实提供了命令行参数。
命令行参数通常用空格分隔,但在这个例子中,你希望将所有参数解释为一个字符串。因为 sys.argv
是字符串的列表,所以你可以将它传递给 join()
方法,这将返回一个字符串。你不希望程序的名称出现在这个字符串中,因此不是使用 sys.argv
,而是使用 sys.argv[1:]
来去掉这个数组的第一个元素。这个表达式求值得到的字符串保存在 address
变量中。
如果运行程序时在命令行中输入以下内容:
mapit 870 Valencia St, San Francisco, CA 94110
sys.argv
变量将包含这样的列表值:
['mapIt.py', '870', 'Valencia', 'St, ', 'San', 'Francisco, ', 'CA', '94110']
address
变量将包含字符串 '870 Valencia St, San Francisco, CA 94110'
。