Python第六次作业

一、读写文件:

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__变量赋值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值