sys.argv的意义

原文地址:https://www.cnblogs.com/zzliu/p/10775049.html

简单来说,sys.argv是一个参数列表,这个列表存放着从外界获取到的参数(可能有多个)

下面以一个例子来详细阐述sys.argv,本次演示在ubuntu环境下运行

新建一个test.py,写入以下代码

test.py

import sys
lst = sys.argv
print(lst)

在命令行使用python解释器运行test.py

python3 test.py    # 注意此命令要在test.py所在的目录下运行

运行结果

['test.py']

可以看到sys.argv里面只有一个元素,是当前文件的文件名

下面我们在运行test.py时传入一个参数,观察sys.argv的变化

python3 test.py 2

运行结果

['test.py', '2']

传入多个参数时

python3 test.py 2 "hello"    # 注意参数是以空格分割

运行结果

['test.py', '2', 'hello']

改变当前工作目录,切换到上级目录tmp

cd ..

再次运行test.py

python3 tmp/test.py 2 "hello" "world"

运行结果

['tmp/test.py', '2', 'hello', 'world']

可以看到sys.argv的第一个元素是执行的py文件相对于当前工作目录的路径

sys.argv的使用

工作中我们可能会遇到这样一种情况,需要在命令行执行py文件,同时也需要传入参数,这时候sys.argv就派上用场了,sys.argv维护着一个参数列表,从外界传入的参数都记录在这个列表里,从而就可以在py文件里使用这些参数

修改test.py文件
test.py

import sys
lst = sys.argv
print(lst) def func():
a = int(sys.argv[1])
b = int(sys.argv[2])
return a**b print("result of func:",func())

运行结果

['test.py', '2', '3']
result of func: 8

小结

简而言之,sys.argv是一个参数列表,第一个元素是执行的py文件相对于当前工作目录的路径,后面的元素都是外界传入的参数,在py文件里可以使用sys.argv[index]的方式获取这些参数

sys.argv的意义[转]的更多相关文章

  1. sys.argv的意义及用法

    sys.argv的意义 简单来说,sys.argv是一个参数列表,这个列表存放着从外界获取到的参数(可能有多个) 下面以一个例子来详细阐述sys.argv,本次演示在ubuntu环境下运行 新建一个t ...

  2. Pyqt5 获取命令行参数sys.argv

    大家有没有注意到,很多软件都能接收第三方应用触发命令行参数,根据参数打开想要的效果. 在windows任务管理器调取命令行列,我们同样能看到进程中有好多是带有参数的. 现在,我们用Pyqt5 (Py3 ...

  3. sys.argv

    import sys i=0 print len(sys.argv) while i < len(sys.argv): print 'sys.argv[%d]:%s' %(i,sys.argv[ ...

  4. [py]os.walk爬目录&sys.argv灵活获取参数

    1, 遍历目录 os.walk('/tmp') os.next()   2,sys.argv ######################################## py@lanny:~/t ...

  5. python sys.argv[]

    sys.argv[]是用来获取命令行参数的,是一个由该脚本自身路径和其它输入的参数组成的List.sys.argv[0]表示代码本身文件路径. 这里,当我们执行python using_sys.py ...

  6. 【python】sys.argv[]的用法

    在学python的过程中,一直弄不明白sys.argv[]的意思,虽知道是表示命令行参数,但还是有些稀里糊涂的感觉. 今天又好好学习了一把,总算是大彻大悟了. Sys.argv[]是用来获取命令行参数 ...

  7. sys.argv[]基本用法

    #python 3.4.2 #windows系统下可以在CMD下执行 python test.py 第一参数 第2个参数 #空格分隔每个参数,sys.argv[]是用来获取命令行参数的 #引用必要的包 ...

  8. Python中sys.argv[]的用法

    类似bash中的$0, $1, $2... sys.argv[0]:文件名 sys.argv[1]:第一个参数 sys.argv[2]:第二个参数 import sys print "The ...

  9. sys.argv[]用法

    #-*- coding: utf-8 -*- """ sys.argv 用来获取命令行参数 sys.argv[0] 表示当前执行文件 "-k".sta ...

随机推荐

  1. K 破忒头的匿名信(ac自动机+小dp)

    题:https://ac.nowcoder.com/acm/contest/4010/K 题意:用一些模式串凑成一个目标串,每个模式串有消耗,问组合的最小消耗,或不能组成输出-1: 分析:典型的AC自 ...

  2. [原]livekd使用问题记录

    sysinternal suite中的livekd.exe可谓神器.可以用来观察本地内核的一些状态,当然抓内核dump再合适不过了. 在使用livekd的时候遇到了一些问题,现总结如下: 使用live ...

  3. Java多线程常见概念

    进程和线程的区别 进程是资源分配的最小单位,线程是CPU调度的最小单位 线程不能看做独立应用,而进程可以 进程有独立的地址空间,互相不影响,线程只是进程的不同执行路径 线程没有独立的地址空间,多进程的 ...

  4. [USACO09DEC]牛收费路径Cow Toll Paths(floyd、加路径上最大点权值的最短路径)

    https://www.luogu.org/problem/P2966 题目描述 Like everyone else, FJ is always thinking up ways to increa ...

  5. 吴裕雄--天生自然 JAVA开发学习:多线程编程

    class RunnableDemo implements Runnable { private Thread t; private String threadName; RunnableDemo( ...

  6. 修改mysql密码报错: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '

    使用这种格式报错: 格式:mysql> set password for 用户名@localhost = password('新密码'); 找到另一种方法解决: ALTER USER 'root ...

  7. dubbo服务调用

    1.Dubbo的缺省(默认)协议:采用单一长连接和NIO异步通讯. 2.  3.调用关系说明 0. 服务容器负责启动,加载,运行服务提供者. 1. 服务提供者在启动时,向注册中心注册自己提供的服务. ...

  8. android应用市场、社区客户端、漫画App、TensorFlow Demo、歌词显示、动画效果等源码

    Android精选源码 MVP架构Android应用市场项目 android刻度盘控件源码 Android实现一个社区客户端 android商品详情页上拉查看详情 基于RxJava+Retrofit2 ...

  9. 吴裕雄--天生自然python学习笔记:python用 Selenium 组件实现浏览器操作自动化

    一般情况下,我们都是用手工操作的方式来对浏览器进行各种操作 . 实际上, 只要我们安装一个自动化操作组件, Python 就可以让我们的很多操作实现自动化 . Selenium 组件 在开发网页时,用 ...

  10. 对Java8新的日期时间类的学习(一)

    引用自Java译站http://it.deepinmind.com/java/2015/03/17/20-examples-of-date-and-time-api-from-Java8.html 除 ...