(一)单一独立的参数

如果命令行输入的参数都是各自单一独立的,直接用个循环把所有参数逐一读出来就行了。sys模块里面直接用args = sys.argv就可以获取到所有参数了(返回值args是一个list),args0]是执行的python文件路径名,args[1:]后面的才是真正命令行输入的参数,用个for循环就可以一一读取args列表,示例代码如下:

import sys

def usage():

print """

This is usage.

This is usage.

This is usage.

"""

def main(argv):

for arg in argv[1:]:

if arg == "-t":

pass

elif arg == "-h" or arg == "--help":

usage()

sys.exit()

elif arg == "-p":

pass

else:

print "Error: invalid parameters"

sys.exit()

if __name__ == "__main__":

main(sys.argv)

(二)参数结合

如果要读取:-t mytest 这样的组合参数,上面的方法就行不通了,在shell里面有shift可以直接移到下一个参数,但在python没有shift的功能,所以得换种方式。一种方法是用getopt模块(官方文档关于getopt的解释:点击打开链接):getopt模块里面的getopt函数可以指定参数可能的类型并且获取所有参数。

用法:

getopt.getopt(args, options[, long_options])

options参数指定短式输入,也就是单横杠"-",例如"-h",long_options是可选的,用于指定长式输入,也就是双横杠"--",例如"--help"。如果是单一参数输入,options和long_options都只需要直接写参数名,例如下面这句代码指定两个单一参数:-h/--help -t/--test:

opts, args = getopt.getopt(sys.argv[1:], "ht", ["help", "test""])

如果是后面还要继续接参数的,options要在参数名后面加冒号":",long_options要在参数名后面加等号"=",例如下面这句代码指定三个参数:-h/--help -t/--test -r path / --root path:

opts, args = getopt.getopt(sys.argv[1:], "htr:", ["help", "test","root="])

getopt函数的返回值有两个,一般只用第一个,如下面的代码,第一个返回值opts :" is a list of (option, value) pairs",也就是一个 -t mytest 这样的元素对,当然如果-t后面不需要再接参数的话,那就没有value值了。利用这个pairs返回值,我们可以用个for循环获取参数,不管是单一独立的参数,还是结合的参数,都可以,示例代码如下:

import sys

import getopt

def usage():

print """

This is usage.

This is usage.

This is usage.

"""

def main(argv):

try:

opts, args = getopt.getopt(sys.argv[1:], "m:p:h", ["miner=", "params=", "help"])

except getopt.GetoptError:

usage()

sys.exit()

for opt, arg in opts:

if opt in ["-h", "--help"]:

pass

elif opt in ["-t", "--test"]:

pass

elif opt in ["-p", "--path"]:

param = arg

print param

sys.exit()

else:

print "Error: invalid parameters"

usage()

sys.exit()

if __name__ == "__main__":

main(sys.argv)

另外,还有个知识点就是,如果想要print一大段string怎么办,用三个双引号包住即可,如上面的代码中usage函数,并且要注意的是三双引号里面的内容不用缩进,直接从最开头开始写,否则会导致出错。

python读取命令行输入-python获取命令行输入参数列表相关推荐

  1. python读文件路径-python获取程序执行文件路径的方法(推荐)

    1.获取当前执行主脚本方法:sys.argv[0]和_ file _ (1)sys.argv 一个传给Python脚本的指令参数列表.sys.argv[0]是脚本的名字.一般得到的是相对路径,用os. ...

  2. python读文件代码-Python遍历文件夹和读写文件的实现代码

    需 求 分 析 1.读取指定目录下的所有文件 2.读取指定文件,输出文件内容 3.创建一个文件并保存到指定目录 实 现 过 程 Python写代码简洁高效,实现以上功能仅用了40行左右的代码~ 昨天用 ...

  3. python读word颜色,Python操作word

    1.Python写word文档 要操作word文档首先需要安装python-docx库: pip install python-docx 然后导入docx模块,或者从docx模块中导入Document ...

  4. python读usb_使用Python来操作Microchip安全芯片

    Microchip提供业界优秀的安全方案,包括支持SHA256,ECC P256和AES128的完整算法支持,同时提供了基于C语言的器件支持库cryptoauthlib. 由于Python语言的通用性 ...

  5. python读文件操作-python 之文件操作

    使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('thefile.txt') try ...

  6. python读文件操作-python文件操作-读写删除复制总结

    1. read三种不同的方式 f = open('hello.txt') #'hello.txt'指的是文件的名称 while True: text = f.readline() #读取文件指针指向的 ...

  7. python读什么英文-Python编程但英语差,能用中文吗?

    Python3 中,确实可以采用中文作为自定义变量.函数.类名.但也仅限于此.代码的核心逻辑,你还是得采用英文. 名字 = "海格力斯" print(名字) /> 一条具体的 ...

  8. python 读下一行-Python:读取上一行并与当前行进行比较

    在Windows上使用2.7的Python noob.我正在以编程方式在HTML中创建层级树视图.我有一个输出类似于这样一个文件:Python:读取上一行并与当前行进行比较 0 2 4 6 8 8 0 ...

  9. python读文件代码-Python读取表格类型文件代码实例

    这篇文章主要介绍了Python读取表格类型文件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 代码如下 resp = My_Request_ ...

  10. python读文件操作-python文件操作读取文件写入文件

    读取文件 要使用文本文件中的信息,首先需要将信息读取到内存中.为此,你可以一次性读取文件的全部内容,也可以以每次一行的方式逐步读取. 读取整个文件 要读取文件,需要一个包含几行文本的文件.下面首先来创 ...

最新文章

  1. 最佳SQL Server 2008入门教程
  2. python function if yield_Python中的yield关键字
  3. N*N匹马,N个赛道,求出最快N匹马的解法
  4. 转: java web demo的示例
  5. DateUtils常用方法
  6. 图片加尺寸php代码,php获取图片尺寸(宽度,高度)_php
  7. Android 位置服务——BaiduLocation的使用
  8. Android平台RTMP多实例推送的几种情况探讨
  9. Java 获取目录的大小
  10. 1.4万+阅读量,这篇JAMA论文,详细阐述临床试验统计方法,非常值得借鉴!
  11. 如今有线电视还有必要续费吗
  12. dd for windows
  13. CorelDRAWX4的VBA插件开发(八)更改尺寸与移动
  14. 2022-2027年(新版)中国工程造价咨询行业现状动态与未来前景预测报告
  15. 状态机实现的LED交通灯2
  16. C++11 std::this_thread::sleep_for让我睡一会再干活
  17. 成年人改名字要哪些步骤和手续?
  18. kali2022.1安装google chrome develop 专业版
  19. Injected and Delivered: Fabricating Implicit Control over Actuation Systems by Spoofing Inertial Sen
  20. 区块链版权登记_利用区块链版权证书证明著作权

热门文章

  1. Oracle IMPDP
  2. OVS+DPDK Datapath 包分类技术
  3. 推销员(codevs 5126)
  4. webServices 应该支持Get和Post调用,在web.config应该增加以下代码
  5. 领域模型中的各种角色
  6. VB.NET 中的 As New 以及型別指定
  7. 计算机网络——TCP/IP参考模型和五层参考模型
  8. SpringBoot集成MyBatis的分页插件PageHelper
  9. 沈航计算机考研上岸,【图片】一战厦大计算机上岸,经验帖。慢更【考研吧】_百度贴吧...
  10. eclipse导入项目pom文件报错_eclipse导入maven管理的项目时,pom.xml第一行报错。错误如图1。而且dubbo的xml也不识别。...