Python 命令行参数详解,2024年最新网络安全初级面试题

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注网络安全)
img

正文

python script_1.py

将会看到如下信息:

正在运行的脚本名称: 'script\_1.py'
脚本的参数数量: '1'
脚本的参数: '['script_1.py']'

如果我们使用多个参数执行此脚本:

python script_1.py OpenCV -i test.png

将得到以下信息:

正在运行的脚本名称: 'script\_1.py'
脚本的参数数量: '4'
脚本的参数: '['script_1.py', 'OpenCV', '-i', 'test.png']'

如上所示,列表的第一个元素 script_1.py (sys.argv[0]) 是脚本名称。列表的第二个元素 (sys.argv[1]) OpenCV 是脚本的第一个参数。但同时也可以看到,sys.argv 将命令行选项 -i 也识别为参数,这样并不能方便的满足我们的需求,因此引入 getopt 模块来识别命令行选项。

2. getopt

getopt 模块是专门处理命令行参数的模块,用于获取命令行选项和参数。命令行选项使得程序的参数更加灵活,其支持短选项模式(-)和长选项模式(–)。
该模块提供了两个方法及一个异常处理来解析命令行参数。

2.1 getopt.getopt 方法

getopt.getopt 方法用于解析命令行参数列表,其语法格式如下:

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

方法参数说明如下表所示:

参数说明
args要解析的命令行参数列表,一般是sys.argv[1:],需要过滤掉脚本名(sys.argv[0])
options以字符串的格式定义,options 后的冒号 “:” 表示如果设置该选项,必须有附加的参数,否则就不附加参数
long_options以列表的格式定义,long_options 后的等号 “=” 表示该选项必须有附加的参数,不带冒号表示该选项不附加参数

该方法返回值由两个元素组成: 第一个是 (option, value) 元组的列表。 第二个是参数列表,包含那些没有 - 或 – 的参数。
下面编写 script_2.py 脚本进行演示:

import sys
import getopt


def main(argv):
    input_file = ""
    output_file = ""
    # "hi:o:": 短格式分析串, h 后面没有冒号, 表示后面不带参数; i 和 o 后面带有冒号, 表示后面带参数
    # ["help", "input\_file=", "output\_file="]: 长格式分析串列表, help后面没有等号, 表示后面不带参数; input\_file和output\_file后面带冒号, 表示后面带参数
    # 返回值包括 `opts` 和 `args`, opts 是以元组为元素的列表, 每个元组的形式为: (选项, 附加参数),如: ('-i', 'test.png');
    # args是个列表,其中的元素是那些不含'-'或'--'的参数
    opts, args = getopt.getopt(argv[1:], "hi:o:", ["help", "input\_file=", "output\_file="])

    for opt, arg in opts:
        if opt in ("-h", "--help"):
            print('script\_2.py -i <input\_file> -o <output\_file>')
            print('or: test\_arg.py --input\_file=<input\_file> --output\_file=<output\_file>')
            sys.exit()
        elif opt in ("-i", "--input\_file"):
            input_file = arg
        elif opt in ("-o", "--output\_file"):
            output_file = arg
    print('输入文件为:', input_file)
    print('输出文件为:', output_file)

    # 打印不含'-'或'--'的参数
    for i in range(0, len(args)):
        print('不含'-'或'--'的参数 %s 为:%s' % (i + 1, args[i]))
        
if __name__ == "\_\_main\_\_":
    main(sys.argv)

使用带有命令行选项的命令执行此脚本,以下两种方式是等价的:

# 方式1
python scripy_1.py -i test.png -o output.png OpenCV
# 方式2
python scripy_1.py --input_file test.png --output_file output.png OpenCV

输出得到以下信息:

输入文件为: test.png
输出文件为: output.png
不含'-'或'--'的参数 1 为:OpenCV

2.2 Exception getopt.GetoptError

在参数列表中没有找到所传递参数,或选项的需要的参数为空时会触发该异常。异常的参数是一个字符串,表示错误的原因。属性 msgopt 为相关选项的错误信息。
在上述代码中添加异常处理,检查此错误信息:

# ...
def main(argv):
    input_file = ""
    output_file = ""
    try:
        opts, args = getopt.getopt(argv[1:], "hi:o", ["help", "input\_file=", "output\_file="])
    except getopt.GetoptError as e:
        print(e.msg)
        print(e.opt)
        sys.exit(2)
# ...

使用错误的格式选项传递参数执行脚本:

python scripy_1.py -f

输出以下错误信息:

option -f not recognized
f

3. argparse

当程序中使用采用复杂参数或多个文件名时,推荐使用 Python 的 argparse 库,它以系统的方式处理命令行参数,从而可以编写用户友好的命令行程序。Python 标准库 argparse 同样也是用于解析命令行参数的模块。首先,由程序确定所需的参数,然后, argparse 将这些参数解析为 sys.argv。此外,argparse 会生成帮助和使用信息提示,并在提供无效参数时发出错误。
为了介绍此模块,编写 script_3.py,如下所示:

import argparse
parser = argparse.ArgumentParser()
parser.parse_args()

不带参数运行此脚本不会向 stdout 显示任何内容。但是,如果使用 --help-h 选项,将得到脚本的使用信息提示:

usage: scripy_3.py [-h]
optional arguments:
-h, --help show this help message and exit

指定其他参数会导致错误,例如使用如下命令:

scripy_3.py -i

则会报导致错误:

usage: scripy_3.py [-h]
argparse_minimal.py: error: unrecognized arguments: -i

由于未定义参数,因此不允许其他参数,接下来就添加一个参数,编写 script_4.py 脚本:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("first\_argument", help="this is the string text in connection with first\_argument")
args = parser.parse_args()
print(args.first_argument)

这里添加了 add_argument() 方法。此方法用于指定程序将接受哪些命令行选项,此处添加了 first_argument 参数。此外, argparse 模块存储所有参数,将其名称与每个添加参数的名称相匹配——在此处为 first_argument 。为了获得参数值,需要使用 args.first_argument
如果此脚本以下示方法执行,则输出为 10:

python scripy_4.py 10

但如果脚本在没有参数的情况下执行,则将输出以下信息:

usage: scripy_4.py [-h] first_argument
scripy_4.py: error: the following arguments are required: first_argument

写在最后

在结束之际,我想重申的是,学习并非如攀登险峻高峰,而是如滴水穿石般的持久累积。尤其当我们步入工作岗位之后,持之以恒的学习变得愈发不易,如同在茫茫大海中独自划舟,稍有松懈便可能被巨浪吞噬。然而,对于我们程序员而言,学习是生存之本,是我们在激烈市场竞争中立于不败之地的关键。一旦停止学习,我们便如同逆水行舟,不进则退,终将被时代的洪流所淘汰。因此,不断汲取新知识,不仅是对自己的提升,更是对自己的一份珍贵投资。让我们不断磨砺自己,与时代共同进步,书写属于我们的辉煌篇章。

需要完整版PDF学习资源私我

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

。**

需要完整版PDF学习资源私我

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)
[外链图片转存中…(img-na7Xd14i-1713393795620)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值