一、读写文件
读写文件:
写一个文本文件text:内容为西安培华学院
读取文本文件的内容
复制这个文件text,拷贝为text2
找一张图片,复制这个图片到copy.jpg
给定一个列表[“string1”, “string2”, “string3”]
将列表内容写入文件,每一个元素一行
with open('txt/text.txt', 'r') as file_obj:
data = file_obj.read()
with open('txt/text2.txt', 'w') as file_obj:
file_obj.write(data)
with open('img/01.jpg', 'rb') as file_img_obj:
data_img = file_img_obj.read()
with open('img/copy.jpg', 'wb') as file_img_obj:
file_img_obj.write(data_img)
list_var = ["string1", "string2", "string3"]
with open('txt/list.txt', 'w') as file_obj2:
file_obj2.write('\n'.join(list_var))
二、异常
异常的完整格式,以及每个部分的意思
常遇见的>=5种异常的处理
以及用异常处理来进行读写文件的文件关闭
如何主动抛出异常
异常处理的格式:
try:
要执行语句(有可能遇到异常)
a + b => 1 + 1 正常执行
=> 1 + "1" 执行的时候遇到异常
except [异常类型(可以省略) as name(变量赋值name)]:
做异常处理的语句
except 异常类型2:
处理2
except 异常处理3:
处理3
finally: # 最后
最后执行的语句
多个except的用途:
1.可以处理多个异常: 异常类型2, 异常类型3
2.针对多个不同的异常可以做不同的处理
处理2
处理3
# except 捕获, 异常类型: 捕获哪一种异常
# as name: 是将捕获到异常赋值给name(变量)
那就可以用name去访问异常
# 1.finally中的语句一定是最后执行
# 2.finally中的语句,无论是否出现异常都会执行
# TypeError
try:
print(1 + '1')
except TypeError:
print('TypeError')
# KeyError
dict_var = {1: 2}
try:
print(dict_var[2])
except KeyError:
print('KeyError')
# ValueError
list_var = [1, 2]
try:
print(list_var.index(3))
except ValueError:
print('ValueError')
# IndexError
try:
print(list_var[2])
except IndexError:
print('IndexError')
# NameError
try:
print(test)
except NameError:
print('NameError')
结果:
TypeError
KeyError
ValueError
IndexError
NameError
进程已结束,退出代码0
try:
file_obj = open('txt/1.txt', 'w')
file_obj.write('123456')
except:
print('异常处理')
finally:
file_obj.close()
print('Finally')
结果:
异常处理
# raise 语句支持强制触发指定的异常
try:
1 + 1
raise IndexError from ZeroDivisionError
except IndexError:
print("Handle Index Error")
结果:
Handle Index Error
进程已结束,退出代码0
三、模块和包
模块:在python中,一个.py文件就叫模块
使用模块的好处
(1)提高了代码的可维护性。
(2)代码不必从零开始,当一个模块编写完毕后,就可以被其他地方应用。
(3)可以避免函数名和变量名冲突,相同的函数名和变量可以存放在不同的模块中,但是要注意尽量不要与内置函数名字冲突。
# 导入模块的时候,一定是在模块的顶部导入,如果要导入模块中的具体内容
先在test_name.py中定义function_name()
def function_name():
print('hello')
然后在用import test_name调用test_name模块
# import test_name
# test_name.function_name()
import语句的实质是,在运行模块时,将导入的语句视为执行这个模块
什么是包:管理模块的命名空间
包和目录的区别:Python 只把含 __init__.py 文件的目录当成包
__init__.py的作用:
最简情况下,__init__.py 只是一个空文件,但该文件也可以执行包的初始化代码,或设置 __all__ 变量
这样可以防止以 string 等通用名称命名的目录,无意中屏蔽出现在后方模块搜索路径中的有效模块。