人工智能入门与实战第一季:python基础语法
![](http://img.e-com-net.com/image/info10/54b68649e1e54edbb0288d9b3e2406f7.jpg)
本章是我们python基础的最后一个章节,看到这里的小伙伴们那都是真爱了,给自己点个赞!继续加油!
解决问题的思路
前面章节都是按照对应的知识点一一讲解,作为最后一章,我们换个思路来学,假如你在工作中遇到了文件相关的问题需要处理,而你之前并没有了解过这一块,那么你该怎么样去解决这个问题呢?
我们都知道遇到问题最好不要上来就问别人,我们需要先自己去思考并寻求答案,比如官方文档、百度、谷歌都是很好的方式,一般遇到问题我们首先是看看系统有没有提供相应的模块和方法,如果没有我们再找第三方是否有提供。
基于以上思路我们先去python的官方去看看,有没有我们想要的东西?
1、 打开python官方网站:https://www.python.org
2、选择Python 3.x Docs
3、在模块章节我们简单介绍了python的标准库,我们打开看一看(左上角可以切换为中文,对英文不好的小伙伴非常友好):
4、我们可以从‘标准库参考’进入以下界面:
5、打开内置函数,我们可以看到有一个open函数,这便是我们要找到第一个操作文件的函数:打开文件
这些内置函数是在内置模块builtins.py中的,我们发现该模块中的很多函数我们在前面都已经使用,例如abs()、int()、str()、len()、list()、tuple()、dict()等等。
可能你会说我怎么知道在内置函数中有个open()函数可以打开文件?对于初学者来说确实有点困难,那么我们还可以通过搜索引擎搜索关键字:‘python 文件操作’,也能找到答案,以后再慢慢学会使用官方文档,因为这里才是最新、最标准的资料。
open()函数的使用
我们进入open()函数的界面,里面会有具体的使用方法介绍:
当然我们也可以在开发环境中,例如pycharm中直接点击程序中的open()函数,进入查看:(windows是ctr+单击、mac是command+单击)
open()函数以及文件相关的具体操作
我们创建一个格式为txt的文件,命名为file1,在同级目录下创建一个主模块se1_ch10_file_exception.py,在此模块中执行以下程序。
1、以只读的方式打开文件
# 只读模式打开文件,如果没有此文件时会报错
file1 = open('file1', 'r')
print(file1.read())
# 读取位置定位到开始位置(通过file1.read()执行完之后,当前读取位置在文件末尾)
file1.seek(0)
# 文件内容以列表list形式返回
print(file1.readlines())
# 手动关闭文件
file1.close()
使用with open() as 的形式打开文件
# 自动关闭文件,无需调用close方法
with open('file1', 'r') as file1:
print(file1.read())
2、打开文件,覆盖写入,没有文件会先创建
file2 = open('file2', 'w')
file2.write('hello boys')
# \n转义字符,换行
file2.write('\n')
file2.writelines(['hello girls'])
file2.close()
3、打开文件,追加写入,没有文件会先创建,在文本模式,如果 encoding 没有指定,则根据平台来决定使用的编码
建一个temples文件夹,在此路径下操作文件
with open('temples/file3', 'a', encoding='utf-8') as file3:
file3.write('\rhi dudy')
# \r 回车
file3.write('\r')
file3.write('你好')
4、可读可写
with open('temples/file3', 'r+') as file3:
print(file3.read())
file3.write('\r加点料')
最后生成的文件:
异常
如果我们没有按照程序预期的条件调用属性、方法、传参等操作,程序会抛出异常以提示程序的出错原因
到目前为止我们已经遇到了多种异常(控制台报错):
ValueError: 类型转换时,数据类型错误
AttributeError: 调用了某对象不存在的属性或方法
KeyError: 字典使用了不存在的键
ImportError: 导入不存在的模块
IndexError: 列表索引越界
FileNotFoundError: 只读模式打开文件时,文件不存在
...等等...
...这些异常定义在内置模块builtins.py中,感兴趣的可以自行查看...
当异常发生时,程序报错,且终止运行,这显然不是我们希望的,那么此时我们应该如何处理呢?
先给出处理异常的完整语法格式:
try:
无异常时执行
except 异常1:
有异常1时执行
except 异常2:
有异常2时执行
except 异常n:
有异常n时执行
else:
无异常时执行
finally:
有无异常均执行
接下来我给你举两个例子:
1、写一个字符串转整型的函数
def str_to_int(str):
return int(str)
# 正常传参
print(str_to_int('123'))
# 传入非数字型字符串时报ValueError错误
print(str_to_int('你好'))
为了增加str_to_int()函数的健壮性,我们可以这样处理:
def str_to_int(str):
try:
return int(str)
except ValueError:
# 当发生ValueError异常时执行
print('参数异常')
# 调用
str_to_int('你好')
输出结果:
参数异常
2、打开文件 只读
如果当前路径下没有提前创建test.txt文件,会发生FileNotFoundError异常
file = open('test.txt', 'r')
我们可以重新定义一个open方法,并当异常发生时做容错处理:
def my_open(path):
try:
file = open(path, 'r')
file.close()
except FileNotFoundError:
print('没有找到此文件')
# 调用
my_open('test.txt')
输出结果:
没有找到此文件
关于异常你学会了吗?总结一下:以后我们在写程序时,可以在程序中加入异常的处理以提高程序的健壮性,这是很好的编程习惯。
本章作业
创建一个文件名叫myfile的文件,在文件中分三行写入自己的姓名、年龄、爱好,然后再加入异常的处理。
本章总结
到这里,我们人工智能系列课程之一的python基础就结束了,python基础从第一篇文章的发布到最后一篇文章,大概历时一个半月的时间,全靠业余时间的撰写,进度我还比较满意,接下来我会继续下一个阶段:科学计算库的系列文章的编写,疫情期间,大家注意安全,在家可以多充充电,小伙伴们,我们一起加油努力!
我是猪弟爸爸,这里我会持续更新人工智能自学内容,有问题请关注我的公众号zhudipapa,我会统一在公众号下方回复,同时你也可以第一时间收到我的推文,我们下节见。