文章目录
一、读写文件:
1.写一个文本文件text:内容为西安培华学院读取文本文件的内容复制这个文件text,拷贝为text2
str_data = "西安培华学院"
data1 = open('text', 'w', encoding='UTF-8')
# 以写的方式打开并创建一个text文件
result1 = data1.write(str_data)
data1.close()
data2 = open('text', 'r', encoding='UTF-8')
# 以读的方式打开text文件
result2 = data2.read()
print(result2)
data2.close()
with open('text2', 'w', encoding='UTF-8') as data3:
# 将读的text文件的内容写入text2文件中
data3.write(result2)
# 输出结果为:
西安培华学院
2.找一张图片,复制这个图片到copy.jpg
data = open('line.jpg', 'rb')
result = data.read()
data.close()
data2 = open('copy.jpg', 'wb')
result2 = data2.write(result)
data2.close()
3.给定一个列表[“string1”, “string2”, “string3”]将列表内容写入文件,每一个元素一行
list_data = ["string1", "string2", "string3"]
data = '\n'.join(list_data)
with open('text3', 'wt', newline='') as file_obj:
file_obj.writelines(data)
二、异常
1.异常的完整格式,以及每个部分的意思
try/except
异常捕捉可以使用 try/except 语句。
try/except…else
try/except 语句还有一个可选的 else 子句,如果使用这个子句,那么必须放在所有的 except 子句之后。
else 子句将在 try 子句没有发生任何异常的时候执行。
try-finally 语句
try-finally 语句无论是否发生异常都将执行最后的代码。
Python 使用 raise 语句抛出一个指定的异常。
raise语法格式如下:
raise [Exception [, args [, traceback]]]
2.常遇见的>=5中异常的处理
try:
1 + '1'
1 + 1
except ZeroDivisionError:
print('ZeroDivisionError')
except IndexError:
print('IndexError')
except KeyError:
print('KeyError')
except ValueError:
print('ValueError')
except Exception:
print('最后捕获')
else:
print(1+1)
finally:
print('Finally')
# 输出结果为:
最后捕获
Finally
3.以及用异常处理来进行读写文件的文件关闭
try:
file_obj = open("1.txt", "w")
file_obj.write("123")
1 / 0
except:
print("处理异常")
finally:
file_obj.close()
print("Finally")
# 输出结果为:
处理异常
Finally
4.如何主动抛出异常
使用raise可以强制抛出一个异常,当try中语句可以正常执行时,我们可以使用raise强制抛出一个我们想要处理的异常类型,然后在except中捕获去处理异常。
try:
1
raise IndexError
except IndexError:
print("Handle Index Error")
# 输出结果为:
Handle Index Error
三、模块和包
1.什么叫模块?
退出 Python 解释器后,再次进入时,之前在 Python 解释器中定义的函数和变量就丢失了。因此,编写较长程序时,建议用文本编辑器代替解释器,执行文件中的输入内容,这就是编写脚本。随着程序越来越长,为了方便维护,最好把脚本拆分成多个文件。编写脚本还有一个好处,不同程序调用同一个函数时,不用每次把函数复制到各个程序。
为实现这些需求,Python 把各种定义存入一个文件,在脚本或解释器的交互式实例中使用。这个文件就是 模块 ;模块中的定义可以 导入 到其他模块或 主 模块(在顶层和计算器模式下,执行脚本中可访问的变量集)。
模块是包含 Python 定义和语句的文件。其文件名是模块名加后缀名 .py 。在模块内部,通过全局变量 name 可以获取模块名(即字符串)。
2.如何导入模块,如何导入模块中的具体内容
导入模块的语法:
import module_name #import 模块名
import module_name1, module_name2 #import 模块1,模块2…
如果你要调用模块中内容,怎么调用
module_name.变量/函数/类 #模块名.变量/函数/类
module_name.function_name() #从module_name模块中调用function_name()函数
from module_name import function_name
直接调用function_name
from module_name import * (一般情况不推荐使用)
*: 所有, 但是还是有限制
导入所有不以下划线(_)开头的名称
import sys
sys.audit()
3.import语句的实质是什么?
python中import的实质相当于把被导入的模块执行一遍,此时我们可以在主模块中调用hct模块中的语句.相当于先把hct模块执行一遍,然后调用。
import hct
print(hct.list_data)
#hct模块中的语句
list_data = [1, 2, 3]
print('111')
print(list_data)
# 输出结果为
111
[1, 2, 3]
[1, 2, 3]
4.什么是包,包和目录的区别,init.py的作用
包是一种管理 Python 模块命名空间的形式,采用"点模块名称"。
比如一个模块的名称是 A.B, 那么他表示一个包 A中的子模块 B 。
就好像使用模块的时候,你不用担心不同模块之间的全局变量相互影响一样,采用点模块名称这种形式也不用担心不同库之间的模块重名的情况。
这样不同的作者都可以提供 NumPy 模块,或者是 Python 图形库。
不妨假设你想设计一套统一处理声音文件和数据的模块(或者称之为一个"包")。
现存很多种不同的音频文件格式(基本上都是通过后缀名区分的,例如: .wav,:file:.aiff,:file:.au,),所以你需要有一组不断增加的模块,用来在不同的格式之间转换。
并且针对这些音频数据,还有很多不同的操作(比如混音,添加回声,增加均衡器功能,创建人造立体声效果),所以你还需要一组怎么也写不完的模块来处理这些操作。
在导入一个包的时候,Python 会根据 sys.path 中的目录来寻找这个包中包含的子目录。
目录只有包含一个叫做 init.py 的文件才会被认作是一个包,主要是为了避免一些滥俗的名字(比如叫做 string)不小心的影响搜索路径中的有效模块。
最简单的情况,放一个空的 :file:init.py就可以了。当然这个文件中也可以包含一些初始化代码或者为(将在后面介绍的) __all__变量赋值。