守望的麦子

使用命令行传递参数的 Python 实例

2017-6-18    新横滨    /python/2017/06/18/argv.html python

Python 是一门优雅而健壮的编程语言,它继承了传统编译语言的强大性和通用性,同时也借鉴了简单脚本和解释语言的易用性。

Python 编程简明教程 https://wheat.at/python/

前几天阿狗哥问了我标题的这个问题,我想了个实例,也记录下来。

先解释下标题:

使用命令行传递参数

举个例子,一个 Python 脚本 test.py,我们希望通过执行 python test.py --argv1 item1 --argv2 item2 ... --help --version 这样的方式,来运行脚本中的方法或功能,获取脚本中的数值。

其中:--argv1, --argv2… 为脚本中定义的固定形式;item1, item2 可能为一个固定列表中的值,也可能为非固定的字符串等,--help, --version 从脚本中取得内容。

提到 Python 的命令行参数,首先就会让人想到 sys.argv,其包含了命令行参数的列表。例如 sys.argv[] 是用来获取命令行参数的,sys.argv[0] 表示代码文件本身的文件路径,比如在命令行输入 python test.py --help,那么 sys.argv[0] 输出 test.py,sys.argv[1] 会输出 –help。

补充:sys.startswith() 用来判断一个对象以什么开头,例如在 Python 命令行输入 'abc'.startswith('ab') 就会返回 True。

以下供参考的实例:

 1 import sys
 2 
 3 """
 4 demo:
 5 sys.argv.python --hi Jason --write name/all --version --help
 6 """
 7 
 8 def write(input):
 9     obj = open('./output.txt', 'w')
10     obj.write(input)
11     obj.close()
12 
13 #print "sys.argv:", sys.argv
14 #print "sys.argv[0]:", sys.argv[0]
15 
16 dict = {}
17 
18 for i in sys.argv:
19     if '--' in i:
20         try:
21             dict[i[2:]] = sys.argv[sys.argv.index(i)+1]
22         except:
23             dict[i[2:]] = 'null'
24 
25 #print dict
26 
27 if 'hi' in dict:
28     global content
29     content = 'Hello! ' + dict['hi']+'. ' + 'How are you today?'
30     print content
31 
32 if 'write' in dict:
33     if dict['write'] == 'name':
34         write(dict['hi'])
35     if dict['write'] == 'all':
36         write(content)
37 
38 if 'version' in dict:
39     print 'version 1.0'
40 
41 if 'help' in dict:
42     print 'God helps those who help themselves.'

- EOF -

关于作者
麦子,80 后,现从事通信行业。安卓玩家一个人的书房朗读者。
MRJENGLISH
jsntn
jasonwtien
jasonwtien
更多…… /about.html

最近更新: