收集整理了一份《2024年最新Python全套学习资料》免费送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来
如果你需要这些资料,可以添加V无偿获取:hxbc188 (备注666)
正文
该方法返回值由两个元素组成: 第一个是 (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
在参数列表中没有找到所传递参数,或选项的需要的参数为空时会触发该异常。异常的参数是一个字符串,表示错误的原因。属性 msg
和 opt
为相关选项的错误信息。
在上述代码中添加异常处理,检查此错误信息:
# ...
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
最后,如果我们使用 -h
选项执行脚本,输出将如下所示:
usage: scripy_4.py [-h] first_argument
positional arguments:
first_argument this is the string text in connection with first_argument
optional arguments:
-h, --help show this help message and exit
默认情况下,argparse 将提供的选项视为字符串。因此,如果参数不是字符串,则应使用 type
选项。使用 script_5.py
脚本,其中添加了两个参数,这两个参数是 int
类型:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("first\_number", help="first number to be added", type=int)
parser.add_argument("second\_number", help="second number to be added", type=int)
args = parser.parse_args()
print("args: '{}'".format(args))
print("the sum is: '{}'".format(args.first_number + args.second_number))
args_dict = vars(parser.parse_args())
print("args\_dict dictionary: '{}'".format(args_dict))
print("first argument from the dictionary: '{}'".format(args_dict["first\_number"]))
在前面的示例中,通过调用 vars()
函数将参数存储在字典中:
args_dict = vars(parser.parse_args())
print("args\_dict dictionary: '{}'".format(args_dict))
print("first argument from the dictionary: '{}'".format(args_dict["first\_number"]))
如果不带参数执行脚本:
python script_5.py
则输出如下:
usage: scripy_5.py [-h] first_number second_number
scripy_5.py: error: the following arguments are required: first_number, second_number
此外,如果我们使用 -h 选项执行脚本:
做了那么多年开发,自学了很多门编程语言,我很明白学习资源对于学一门新语言的重要性,这些年也收藏了不少的Python干货,对我来说这些东西确实已经用不到了,但对于准备自学Python的人来说,或许它就是一个宝藏,可以给你省去很多的时间和精力。
别在网上瞎学了,我最近也做了一些资源的更新,只要你是我的粉丝,这期福利你都可拿走。
我先来介绍一下这些东西怎么用,文末抱走。
* * *
**(1)Python所有方向的学习路线(新版)**
这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
最近我才对这些路线做了一下新的更新,知识体系更全面了。
![在这里插入图片描述](https://img-blog.csdnimg.cn/8fc093dcfa1f476694c574db1242c05b.png)
**(2)Python学习视频**
包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然没有那么全面,但是对于入门来说是没问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。
![在这里插入图片描述](https://img-blog.csdnimg.cn/d66e3ad5592f4cdcb197de0dc0438ec5.png#pic_center)
**(3)100多个练手项目**
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。
![在这里插入图片描述](https://img-blog.csdnimg.cn/f5aeb4050ab547cf90b1a028d1aacb1d.png#pic_center)
**(4)200多本电子书**
这些年我也收藏了很多电子书,大概200多本,有时候带实体书不方便的话,我就会去打开电子书看看,书籍可不一定比视频教程差,尤其是权威的技术书籍。
基本上主流的和经典的都有,这里我就不放图了,版权问题,个人看看是没有问题的。
**(5)Python知识点汇总**
知识点汇总有点像学习路线,但与学习路线不同的点就在于,知识点汇总更为细致,里面包含了对具体知识点的简单说明,而我们的学习路线则更为抽象和简单,只是为了方便大家只是某个领域你应该学习哪些技术栈。
![在这里插入图片描述](https://img-blog.csdnimg.cn/c741a91b05a542ba9dc8abf2f2f4b1af.png)
**(6)其他资料**
还有其他的一些东西,比如说我自己出的Python入门图文类教程,没有电脑的时候用手机也可以学习知识,学会了理论之后再去敲代码实践验证,还有Python中文版的库资料、MySQL和HTML标签大全等等,这些都是可以送给粉丝们的东西。
![在这里插入图片描述](https://img-blog.csdnimg.cn/9fa77af248b84885a6ec779b2ead064d.png)
**这些都不是什么非常值钱的东西,但对于没有资源或者资源不是很好的学习者来说确实很不错,你要是用得到的话都可以直接抱走,关注过我的人都知道,这些都是可以拿到的。**
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**如果你需要这些资料,可以添加V无偿获取:hxbc188 (备注666)**
![img](https://img-blog.csdnimg.cn/img_convert/47a32fe0dfca6e8e89687c09b3ee9051.png)
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
9b2ead064d.png)
**这些都不是什么非常值钱的东西,但对于没有资源或者资源不是很好的学习者来说确实很不错,你要是用得到的话都可以直接抱走,关注过我的人都知道,这些都是可以拿到的。**
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**如果你需要这些资料,可以添加V无偿获取:hxbc188 (备注666)**
[外链图片转存中...(img-tjg5AMxc-1713855790895)]
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**