使用命令行传递参数的 Python 实例
2017-06-18
新横滨
雨
/python/2017/06/18/argv.html
python
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 -
关于作者
最近更新: