Python基础(五)文件、异常、模块

一、文件的读取和写入

# 编码
# 什么是文件
# 文件的打开、读写、关闭

# 打开   r表示只读
f = open("D:\\a.txt", "r", encoding="UTF-8")
print(type(f))  # <class '_io.TextIOWrapper'>

# 读取文件中10个字节的数据
l = f.read(10)
print(l)  # Java 是一个通用
print(type(l))  # <class 'str'>

# 读取文件中的全部内容, 这里注意到读取的内容是接上面10个字节后的数据,这是因为同一个文件对象读取数据都会记录指针,每次都是读指针后的数据
s = f.read()
print(s)

# 读取文件的全部行,封装到列表中
f = open("D:\\a.txt", "r", encoding="UTF-8")
my_list = f.readlines()
print(my_list)

# 按行读取
f = open("D:\\a.txt", "r", encoding="UTF-8")
print(f.readline()) # 每次读一行

print("---------------------------")
# for循环读取文件
for line in open("D:\\a.txt", "r", encoding="UTF-8"):
    print(line)

# 关闭文件,避免资源占用
f.close()
print("================================================")
# with open as f 此写法会自动帮我们关闭文件,避免资源浪费
with open("D:\\a.txt", "r", encoding="UTF-8") as file:
    for line in file:
        print(line)


# 文件的写入 w模式下如果文件不存在则创建文件,如果文件存在,则写入的内容会覆盖旧内容
f = open("D:\\test.txt", "w", encoding="UTF-8")
f.write("好好学习,天天向上")
f.flush()
f.close() # close方法实际内置了flush方法


# 文件的追加  a模式下如果文件不存在则创建文件,如果文件存在,则写入的内容会追加到旧内容后面
f = open("D:\\test1.txt", "a", encoding="UTF-8")
f.write("好好学习,天天向上!!!\n")
f.flush()
f.close() # close方法实际内置了flush方法

二、异常

1. 异常处理

# 基本捕获异常
try:
    open("D:\\DDD.txt", "r")
except :
    print("代码发生了异常")

# 捕获Exception异常
try:
    open("D:\\DDD.txt", "r")
except Exception as e:
    print(f"代码发生了异常:{e}")

# 捕获指定异常
try:
    print(name)
except NameError as e:
    print(f"出现异常:{e}")  # 出现异常:name 'name' is not defined

# 捕获多个异常
try:
    1 / 0
except (NameError, ZeroDivisionError) as e:
    print(f"出现异常:{e}")

# 捕获异常
try:
    print("xxx")
except Exception as e:
    print(f"出现异常{e}")
else:
    print("没出现异常处理的逻辑,可选")
finally:
    print("无论是否异常都会处理的逻辑")

2. 异常传递

# 异常的传递
def func1():
    print("func1 start")
    1/0
    print("func1 end")

def func2():
    print("func2 start")
    func1()
    print("func2 end")

def main():
    try:
        func2()
    except Exception as e:
        print(f"出现异常{e}")

main()  # 出现异常division by zero

三、模块

1. 使用内置模块

模块:是一个Python文件,以.py结尾,模块能定义函数,类和变量,模块里也能包含可执行代码。我们可以当成工具包使用。注意模块的导入一般放到顶部
导入语法:[from 模块名] import [模块 | 类 | 变量 | 函数 | *] [as 别名]

# 常用形式
# 1. import 模块名
import time

time.sleep(2)
print("end")
# 2. from 模块名 import 类、变量、方法等
from time import sleep  # 从time模块中导入sleep函数
sleep(2)
print("kk")
# 3. from 模块名 import *
from time import *   # 从time模块中导入全部功能
sleep(2)
print("jj")
# 4. import 模块名 as 别名
import time as t

t.sleep(2)
print("end")
# 5. from 模块名 import 功能名 as 别名
from time import sleep as sl
sl(2)
print("end")

2. 自定义模块

自定义模块就是创建一个py结尾文件,里面可以添加变量,函数,类等,以便我们使用

# 自定义模块就是创建一个py结尾文件,里面可以添加变量,函数,类等,以便我们使用
# 导入自定义模块与导入内置模块一样的用法
import my_module
my_module.test(1, 2)

# 导入不同模块的同名功能,只会时候最后导入的那个模块的功能
from my_module import test
from my_module import test
test(1, 2)

# __main__ 变量,如果在模块内调用了函数作为测试,又不想被其它代码引入的时候执行测试代码,则可以使用这个main变量
if __name__ == "__main__":
    test(1, 2)
    
# __all__ 变量,from 模块 import * 的时候,如果顶部写了all变量,那么导入的不是所有,而是all定义的功能
from my_module import *
__all__ = ["test"]
test(1, 2)

四、Python 包

1. 自定义包

包就是一个文件夹,里面可以存放许多Python模块,通过包,在逻辑上将一批模块归为一类,方便使用。
__init__.py文件会在创建包的时候默认创建,通过这个文件来表示一个文件夹是Python的包,而非普通的文件

# 导包方式一
import my_package.my_module01
import my_package.my_module02

my_package.my_module01.func01()
my_package.my_module02.func02()
# 导包方式二
from my_package import my_module01
from my_package import my_module02
my_module01.func01()
my_module02.func02()
# 导包方式三
from my_package.my_module01 import func01
from my_package.my_module02 import func02
func01()
func02()

# __all__ 变量控制* 号
from my_package import *
my_module01.func01()
my_module02.func02()

2. 引入第三方包

第三方包就是别人写好的实用的Python包,非官方提供,我们可以通过命令行下载第三方包

pip install 包名
# 国内加速
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名

我们还可以在pycharm中安装
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值