简介
在实际应用中,经常需要编写自己的命令行工具,来实现一些系统管理的功能。在本系列文章中,将依次介绍通过sys.argv、optparse、argparse模块来创建Python命令行工具,介绍如何整合Shell命令到Python命令行工具中。
使用基本标准输入
创建命令行工具最简单,应该是使用sys模块的sys.argv处理命令行参数。
以一个简单应用为例:
以一个简单应用为例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
'''
Created on May 16, 2017
@author: bob
'''
import sys
if __name__ == '__main__':
#Python indexes start at Zero, so let's not count the command itself
#which is sys.argv[0]
print sys.argv
num_arguments = len(sys.argv) - 1
#if there are no arguments to the command, send a message to standard error
if num_arguments == 0:
print "Hi, type in an option silly"
else:
print "You typed in", num_arguments, "arguments"
命令行参数以列表的形式传递给Python脚本。argv[0]存储的脚本名(脚本名是否提供全路径信息与平台有关),输入参数的索引从1开始,即输入参数存储在sys.argv[1:]里。
在Ubuntu 16.04系统上的运行结果如下:
bob@ubuntu:~$ ./sysargv.py
['./sysargv.py']
Hi, type in an option silly
bob@ubuntu:~$ ./sysargv.py hello world
['./sysargv.py', 'hello', 'world']
You typed in 2 arguments
在Win 7系统上的运行结果如下:
D:\github\pystudy\PythonStudy\clis>sysargv.py
['D:\\github\\pystudy\\PythonStudy\\clis\\sysargv.py']
Hi, type in an option silly
D:\github\pystudy\PythonStudy\clis>sysargv.py hello world
['D:\\github\\pystudy\\PythonStudy\\clis\\sysargv.py', 'hello', 'world']
You typed in 2 arguments
总结
使用sys.argv可以非常快速的创建命令行工具,但由于其缺少命令选项解析的功能,因此实际使用中,很少会使用此工具,仅用于创建简单的命令行工具。