Python-文件操作、异常、模块、包

文件操作

文件打开与关闭

使用open()函数打开文件,并返回一个文件对象。

# file:文件对象
file = open(file_path, mode = 'r', encoding=None)
# 关闭文件
file.close()
# 完整的语法格式
file = open(file_path, mode = 'r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

file_path:文件所在的具体路径;
mode:打开文件的模式;
encoding:编码格式,一般使用utf-8。
常见打开文件的模式:

"r"以只读方式打开文件,文件指针放在文件开头。如果文件不存在则报错。
"w"打开文件进行写入,如果该文件已存在,则打开文件,并从头开始编辑,即原有的所有内容会被删除。如果该文件不存在,则创建该文件并写入。
"a"打开供追加的文件 ,如果该文件已存在,文件指针将会放在文件的结尾。如果文件不存在则创建该文件并写入。
"x"创建指定的文件,如果文件存在则报错。
"b"指定文件作为二进制模式进行处理。

注意:文本形式可以使用"r""w""a"模式。非文本形式文件要使用"b"模式。

文件读取

文件对象读取常用的函数:

file.read(size)size表示从文件中读取指定的字节数,如果未给定,则读取所有内容
file.readlines()按行读取文件所有内容,并返回列表,包括"\n"字符
file.readline()读取整行,包括"\n"字符,且一次仅读取一行
# 按行处理文件
for line in file.readlines():
    line = line.strip() # 清除首尾的空格和换行符
    print(line)
# 等同于下面的写法,类似于字典里获取键值的写法
'''
for line in file:
	print(line.strip())
'''

with语句

语法格式:

with exoression as variable:
	# 代码块
'''
exoression:此表达式返回一个支持上下文管理协议的对象
as variable:用于将表达式结果赋值给变量
# 代码块执行完毕后,自动调用清理方法
'''
with open(file_open, "r") as file:
	for line in file.readlines:
		line = line.strip()
		print(line)
# 操作完成后,文件已自动关闭

文本文件词频统计

统计article.txt文件中Hello单词出现的次数(按空格分割)。

count = 0
file = open("article.txt", "r", encoding = "utf-8")
for line in file.readlines():
    line = line.strip()
# split以空格分割返回列表
    for word in line.split(" "):
        if "Hello" == word:
            count += 1
file.close()
print("文件中Hello的数量为:%s" % count)

文件写入

使用文件的 "w"或者"a"模式。
文件对象写入常用的函数:

file.write(str)将字符串写入缓冲区,返回写入字符的长度(内容积攒在程序的缓冲区中,还未真正写入文件)
file.writelines()向文件写入一个序列字符串列表,如需换行则需手动添加每行的换行符(内容积攒在程序的缓冲区中,还未真正写入文件)
file.flush()刷新文件内部缓冲,把内部缓冲区的数据立刻写入文件

注意:write不会自动换行,如需换行,需手动添加换行符。文件关闭前会自动刷新文件,将缓冲区的数据写入文件。
非文本文件读取写入

file_r = open("D:/Hello.mkv", "rb")
file_w = open("E:/Hello.mkv", "wb")
file_w.write(file_w.read())
file_r.close
file_w.close

异常

程序运行过程中的错误。

异常处理

try/except

'''
执行try代码块无异常时,忽略except代码块;
出现异常时,如果异常的类型和except后面的错误的名称相符,执行对应的except代码块。
'''
# 基本格式
try:
	代码块
except:
	发生异常时执行的代码
	
# 捕获所有异常,等同于上述的写法
try:
	代码块
except Exception as err:
	发生异常时执行的代码
	print(err)  # 打印异常信息
	
# 捕获指定异常
try:
	代码块
except TypeError:
	发生TypeError异常时执行的代码
except FileNotFoundError:
	发生FileNotFoundError异常时执行的代码
except OSError as err:
	发生OSError异常时执行的代码
    print(err)  # 打印异常信息
    
# 捕获多个异常
except (TypeError, FileNotFoundError, OSError):
	发生任一异常时执行的代码
...   

try/except...else
try/except区别是,在try代码块没有发生任何异常时执行else中的子代码块。
try/except...else...finally
与前面的区别是,无论try代码块有没有发生异常,都执行finally中的子代码块。

try:
	代码块
except:
	发生异常时执行的代码
else:
	没有异常时执行的代码
finally:
	无论有没有异常都执行的代码

模块

一个包含python定义和语句的.py文件,可包含变量、函数、类、可执行代码等,实现代码复用、模块化管理和命名空间隔离。文件名就是模块名。
导入模块的格式

'''
[from 模块名] import [模块/类/变量/函数/*] [as 别名]
# 方框中的内容可选
'''
import math  # 导入整个模块
print(math.pi)  # 调用模块中的属性

import numpy as np  # 别名
print(np.array([1, 2, 3]))

from math import sqrt  # 导入模块中具体的某个功能
print(sqrt(16))  # 直接调用函数
# from math import *   导入模块中的所有功能,不推荐,可能与其他模块中同名的功能相冲突

注意:若导入的多个模块的功能重名,后导入的功能被调用。
__name__属性:使该程序块仅在该模块自身运行时执行。在其他程序文件中模块被引入时,该程序块不执行。

if __name__ == '__main__':
	仅在该模块自身运行时执行的代码块

注意:每个模块中都有一个__name__属性,是python的内置变量。如果该模块在本文件中被直接运行,__name__被赋值为__main__。如果该模块是被导入的,__name__被赋值为模块名。

__all__属性:如果.py文件中存在一个名为__all__的变量,当使用from 模块名 import *导入该模块时,只导入这个列表中的内容。

一种组织模块的层级结构,本质上是包含__init__.py文件的目录,用于将相关模块分组管理,避免模块名冲突,并实现代码的结构化复用。
基本结构如下:

my_package/          # 根包目录
    __init__.py      # 包的初始化文件
    module1.py       # 子模块1
    module2.py       # 子模块2
    sub_package/     # 子包目录
        __init__.py  # 子包初始化文件
        module3.py   # 子包的子模块

导入包

'''
import 包名.模块名
'''

可在包内__init__.py文件中添加 __all__ 列表变量,控制允许导入的模块列表。
数据处理与分析中常用的包:numpypandasmatplotlibseaborn
机器学习与人工智能中常用的包:scikit-learntensorflow / pytorchtransformers

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值