python 您所在的位置:网站首页 使用python获取用户的环境变量 python

python

2023-11-17 20:23| 来源: 网络整理| 查看: 265

文章目录 input()函数sys.argv模块argparse模块getopt模块 参考链接:http://c.biancheng.net/view/4228.html python获取参数的方式笔者归纳下来主要有三种方式,下面依次说明。

input()函数

input()函数通过在命令行提示的形式提示用户输入需要的参数,如下:

data = input("please enter the data: ") print(data)

将上述代码保存在test.py脚本文件中,在命令行执行脚本语句 python test.py 会在命令行输出input括号中的提示语句 please enter the data: ,用户输入一个数8899(随便一个都行,字符串也可以),敲击回车会直接打印输入的数据。 如果我们打印data的数据类型会发现其类型为“str”:

>>> print(type(data))

也就是说,无论输入的是什么,最终data的数据类型都是“str”。可以尝试输入 8899, “8899”, aabb, “aabb”,结果都是一样的。 需要注意的是python2中input与python3的input不一样,不要混淆了。具体参考:python2中的input 以及 python3中的input python2中raw_input与python3中的input比较类似,在此不赘述,见:py2的raw_input与py3的input

sys.argv模块

参考:链接 sys标准库最常用的是sys.argv,用来调用命令行参数,这些命令行参数以链表形式存储于 sys 模块的 argv 变量。 例如在test.py文件有如下代码:

import sys print(sys.argv)

在命令行窗口执行 python test.py one two three,结果如下:

[‘test.py’, ‘one’, ‘two’, ‘three’]

通常第一个参数 sys.argv[0] 表示当前python脚本的名称,因当前工作路径(E:\code-study\python)就是该脚本所在路径,因此打印的是 ‘test.py’ 。而如果当前工作路径是C盘,则执行脚本语句为 python E:\code-study\python\test.py one two three ,执行之后 sys.argv[0] 打印的则是 ‘E:\code-study\python\test.py’ 。该路径中双斜杠“\”表示在Linux下的路径“/”,具体可自行查看。 而如果想要在脚本中获取当前脚本的绝对路径,可采用如下代码:

import os print(os.path.abspath(sys.argv[0]))

打印的结果:

E:\code-study\python\test.py

该语句返回的是Windows下该脚本的绝对路径,且不论当前工作路径是什么,都会返回绝对路径。你可以尝试将工作路径分别切换到C盘和该脚本所在路径下,然后再执行上述代码试试看。关于路径的问题下次专门写一篇博客,先留个坑。 回到正题,sys.argv[1],sys.argv[2],sys.argv[3]分别用于索引命令行的参数,也就是用户在执行python脚本输入的参数。该参数不区分输入形式,读取之后一律是字符串形式。可尝试用type查看类型。

argparse模块

参考链接: argparse模块 argparse参数介绍 还是先看例子吧:

import argparse parser = argparse.ArgumentParser() parser.description='please enter two parameters a and b ...' parser.add_argument("-a", "--inputA", help="this is parameter a", dest="argA", type=int, default="0") parser.add_argument("-b", "--inputB", help="this is parameter b", type=int, default="1") args = parser.parse_args() print("parameter a is :",args.argA) print("parameter b is :",args.inputB)

代码保存到test2.py文件中,我们先运行:python test2.py -h,显示如下结果:

$ python test2.py -h usage: test2.py [-h] [-a ARGA] [-b INPUTB] please enter two parameters a and b ... optional arguments: -h, --help show this help message and exit -a ARGA, --inputA ARGA this is parameter a -b INPUTB, --inputB INPUTB this is parameter b

-h表示显示帮助信息,也可以输入–help显示帮助信息。通常–help是表示完整的长参数,-h表示简写方式。 上面的帮助信息显示有两个参数,输入形式可以是 -a 和 -b 或者是 --inputA 和 --inputB help="this is parameter a"的帮助信息也会显示在窗口上面,用来描述该参数。type表示该参数类型,必须输入的类型。default表示在没有输入该变量的情况下默认的值。 a和b两个参数不同的地方在于,a参数中多了一个dest=“argA”,用来表示在代码中如何引用参数a。这个可以从代码中看到,加了dest之后,参数a的引用方式是args.argA。而b参数因为没有加dest描述,默认的引用方式是args.inputB。参数a使用dest已经改变了其引用名称,因而默认的args.inputA已经不能使用了。 在命令行直接运行 python test2.py,结果如下:

$ python test2.py parameter a is : 0 parameter b is : 1

没有输入参数,于是打印的就是默认的参数数值。 带参数输入 python test2.py -a 2 -b 3,结果如下:

$ python test2.py -a 2 -b 3 parameter a is : 2 parameter b is : 3 getopt模块

参考:Python命令行:getopt模块详解 该模块平时用的少,刚好最近碰到有个需求是在命令行输入 -v 的时候打印脚本的版本信息,不执行脚本,于是想到了该模块。 将下面代码保存在 test2.py 中。 getopt模块参数列表:

getopt.getopt(args, shortopts, longopts=[]) args指的是当前脚本接收的参数,它是一个列表,可以通过sys.argv获得 shortopts 是短参数,类似-v,-h这样的参数。短参数后面有冒号 “:” 表示该参数有输入值。 longopts 是长参数,类似–help,–version这样的参数。长参数后面带等号 “=” 表示参数有输入值

import getopt import sys opts,args = getopt.getopt(sys.argv[1:],'-h-p:-v',['help','datapath=','version']) for opt_name,opt_value in opts: if opt_name in ('-h','--help'): print("Help info") exit() if opt_name in ('-v','--version'): print("The current Version is v1.0 ") exit() if opt_name in ('-p','--datapath'): datapath = opt_value print("The datapath is ",datapath) # do something exit() if __name__ == "__main__": print("this is a test file ")

执行 python test2.py -v,打印版本信息并退出。

$ python test2.py -v The current Version is v1.0

执行 python test2.py -h,打印帮助信息并退出。

$ python test2.py -h Help info

执行 python test2.py -p /e/code-study/python,打印路径并退出。

$ python test2.py -p /e/code-study/python The datapath is E:/code-study/python

如果执行过程中没有参数输入,会直接执行主函数的代码,不会出现错误。

$ python test2.py this is a test file

该模块的功能符合笔者需求。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有