根据提供的信息,我们可以总结出以下的关键知识点:
### 1. 文件操作
#### 写入文本文件
- 使用 `with open` 语句可以方便地管理文件的打开与关闭。
- `with open('text.txt', 'w', encoding='utf-8') as f:` 这行代码创建了一个名为 `text.txt` 的文件(如果文件已存在则会覆盖),并以写入模式 (`'w'`) 打开。`encoding='utf-8'` 指定了编码方式,这样可以在不同语言环境中正确处理中文字符。
#### 读取文本文件
- 通过类似的方法可以读取文件内容。
- `with open('text.txt', 'r') as f2:` 这行代码以只读模式 (`'r'`) 打开了 `text.txt` 文件。
- `duqu = f2.read()` 将文件的所有内容读取到变量 `duqu` 中。
#### 复制文本文件
- `with open('text2.txt', 'w') as f3:` 创建了一个新的文件 `text2.txt`。
- `f3.write(duqu)` 将先前读取的内容写入新文件,完成了复制过程。
#### 复制二进制文件(如图片)
- `with open('1.jpg', 'rb') as f4:` 以二进制读取模式 (`'rb'`) 打开图片文件。
- `photo = f4.read()` 读取整个图片文件到变量 `photo`。
- `with open('copy.jpg', 'wb') as f5:` 以二进制写入模式 (`'wb'`) 打开或创建目标文件。
- `f5.write(photo)` 将读取的图片数据写入目标文件,从而完成复制。
#### 写入列表到文件
- 可以将列表中的每个元素作为一行写入文件。
- `"\n".join(list_data)` 将列表转换成字符串,其中元素之间由换行符 `\n` 分隔。
- `with open('zuoye', 'w') as f6:` 以写入模式打开文件 `zuoye`。
- `f6.write("\n".join(list_data))` 将列表内容写入文件。
### 2. 异常处理
#### 异常的基本格式
- Python 中的异常处理基本格式如下:
```python
try:
# 尝试执行的代码块
except ExceptionType:
# 如果发生指定类型的异常,则执行这里
else:
# 如果没有发生异常,则执行这里
finally:
# 不论是否发生异常都会执行这里
```
#### 常见异常处理
- **类型异常**:当尝试对不同类型的对象进行不适当的操作时触发。
```python
try:
1 + '1'
except TypeError:
print("类型异常!")
```
- **索引越界异常**:访问列表或其他序列类型中的不存在的索引时触发。
```python
try:
list_var1 = [1, 2, 3]
list_var1[3]
except IndexError:
print("下标索引越界异常!")
```
- **值错误**:当传递给函数的参数类型虽然正确但值不适当时触发。
```python
try:
list_var3 = [4, 5, 6]
list_var3.index(1)
except ValueError:
print("值错误")
```
- **文件打开异常**:尝试打开不存在的文件时触发。
```python
try:
open('666.txt', 'r')
except FileNotFoundError:
print("打开文件异常!")
```
- **finally 子句**:无论是否发生异常都会执行。
```python
finally:
print("垃圾回收操作!")
```
#### 主动抛出异常
- 可以通过 `raise` 语句主动引发异常。
```python
try:
print('111')
raise TypeError
except TypeError:
print("异常处理!")
```
### 3. 模块和包
#### 模块
- 在 Python 中,每一个 `.py` 文件都可以看作是一个模块。
- 模块可以包含函数、类等,用于组织相关的代码。
- 导入模块的方式:
- 直接导入整个模块:`import 模块名`
- 导入模块中的特定内容:`from 模块名 import 函数名`
- `import` 语句用于导入模块,使该模块中的定义可以在当前文件中使用。
#### 包
- 包是一个包含多个模块的目录。
- 包中必须包含一个特殊的文件 `__init__.py`,即使这个文件为空也可以。
- 包的作用在于组织相关模块,便于管理和使用。
- 导入包中的模块或内容时,也需要使用 `import` 或 `from...import` 语法。
#### __init__.py 文件
- 在包中,`__init__.py` 文件定义了包的属性和方法。
- 即便 `__init__.py` 文件为空,也必须存在才能被视为包。
- 导入包实际上是导入了其 `__init__.py` 文件。
#### 库、模块和包之间的关系
- **库**:通常是指完成一个大功能的代码集合,表现形式通常是包。
- **包**:是一种组织模块的方式,使得模块可以根据功能进行分组。
- **模块**:是一个单独的 `.py` 文件,用于实现一个具体的功能。
- 库可以是多个包或多个模块的集合,侧重于实现完整的功能。