webbrowser 模块的 open()函数可以启动一个新浏览器,打开指定的 URL。在交
互式环境中输入以下代码:
>>> import webbrowser
>>> webbrowser.open('http://inventwithpython.com/')
Web 浏览器的选项卡将打开 URL http://inventwithpython.com/。这大概就是
webbrowser模块能做的唯一的事情。既使如此,open()函数确实让一些有趣的事情成为可
能。
让你的代码看起来像这样:
#! 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'。