13
2024
03
02:13:37

关于 sys.argv 的详解



推荐点击下面图片,通过本站淘宝优惠价购买:

image.png

文章目录


详解 sys.argv

关于 sys.argv 可得好好说道说道了。当初我可是被折磨的不要不要的,上一章节我们提到 argv 是获取程序外部的参数,返回值是一个列表。

说实话我一直在 python 解释器、idea 运行,试图从结果发现它的用途,然而结果一直都是没结果,也在网上查了许多资料,大部分都是转裁和复制的。给的都是简明python教程上那个一长串代码的例子,说看了就明白了,可我看得晕头转向的还是没真正明白,只知道 sys.argv[0] 表示当前脚本本身文件路径的该脚本文件。后来经过大量努力,多方求教才真正明悟了,谨以记录和分享,希望能从另一个角度给同在求索过程中的同学一点启发。

sys.argv 其实就是一个从程序外部获取参数 的桥梁,这里所说的 外部 很关键,所以那些试图从代码来说明它作用的解释一直没看明白。因为我们需要先在终端执行脚本, 并从外部传入参数(可以是多个),所以获得的是一个列表(list),也就是说sys.argv其实可以看作是一个列表,所以才能用[ ]提取其中的元素。其第一个元素是程序本身,随后才依次是外部传入的参数。

我们先来看一下 sys.argv 返回的是什么?

import sysprint(sys.argv)# >>> 执行结果如下:# >>> ['/Users/username/PycharmProjects/XXXXX/XXXXX/animal/package_sys.py']# >>> 从执行结果可以看出 其输出的就是当前路径下的当前脚本本身,也就可以理解为 'sys.argv' 其实就是运行自身的脚本文件 # >>> 我们从 '外部' 运行该脚本文件的时候,需要传入参数(可以是多个)

接下来我们将上面的代码改为如下:

import sysprint(sys.argv[0], sys.argv[1])# >>> 接下来我们进入 Terminal 终端 利用 python 执行 该脚本文件,并传入 测试参数,结果如下图。


为了更好的 演示 sys.argv 属性,我们将 sys 常用的函数与属性进行一下条件判断。示例如下:

import sys

command = sys.argv[1]if command == 'modules':
    modules = sys.modules    print(modules)elif command == 'path':
    path = sys.path    print(path)elif command == 'encoding':
    code = sys.getdefaultencoding()
    print(code)elif command == 'platform':
    print(sys.platform)elif command == 'version':
    print(sys.version)else:
    print('该命令未识别')

然后在 Terminal 终端 执行该脚本,如下图:



看到这里 ,应该明白了吧?sys.argv 其实就是一个列表,里边需要用户传入的参数,关键就是要明白这参数是从程序外部输入的,而非代码本身的什么地方,要想看到它的效果就应该将程序保存了,从外部来运行程序并给出参数。


本文链接:http://www.hqyman.cn/post/5407.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:





休息一下,本站随机推荐观看栏目:


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

您的IP地址是: