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

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

Python 是一门优雅而健壮的编程语言,它继承了传统编译语言的强大性和通用性,同时也借鉴了简单脚本和解释语言的易用性。
Python 编程简明教程 https://jsntn.com/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。

以下供参考的实例:

import sys

"""
demo:
sys.argv.python --hi Jason --write name/all --version --help
"""

def write(input):
    obj = open('./output.txt', 'w')
    obj.write(input)
    obj.close()

#print "sys.argv:", sys.argv
#print "sys.argv[0]:", sys.argv[0]

dict = {}

for i in sys.argv:
    if '--' in i:
        try:
            dict[i[2:]] = sys.argv[sys.argv.index(i)+1]
        except:
            dict[i[2:]] = 'null'

#print dict

if 'hi' in dict:
    global content
    content = 'Hello! ' + dict['hi']+'. ' + 'How are you today?'
    print content

if 'write' in dict:
    if dict['write'] == 'name':
        write(dict['hi'])
    if dict['write'] == 'all':
        write(content)

if 'version' in dict:
    print 'version 1.0'

if 'help' in dict:
    print 'God helps those who help themselves.'

- EOF -

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

最近更新: