【Python】学习笔记 - 文件与异常
【Python】学习笔记 - 文件与异常
- 1. Python的文件
- 1.1 文件的概念相关
- 1.2 文件的基本操作
- 1.2.1 打开文件(open函数)
- 1.2.2 写入文件(write函数)
- 1.2.3 读取文件(read函数)
- 1.2.4 关闭文件(close函数)
- 2. os模块方法
- 2.1 文件操作相关方法
- 2.2 文件夹操作相关方法
- 2.3 文件夹删除补充
- 2.4 with-open
1. Python的文件
1.1 文件的概念相关
内存中存放的数据在计算机关机后就会消失。要长久保存数据,就要使用硬盘、光盘、U 盘等设备。为了便于数据的管理和检索,引入了文件的概念。我们对文件的主要操作:创建文件、打开文件、文件读写、文件备份等等
1.2 文件的基本操作
1.2.1 打开文件(open函数)
f = open(name, mode) 注:返回的结果是一个file文件对象(后续会学习,只需要记住,后续方法都是f.方法())name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。
- 绝对路径:绝对路径表示绝对概念,一般都是从盘符开始,然后一级一级向下查找(不能越级),直到找到我们要访问的文件即可。例如:C:\Python\python.txt
- 相对路径:相对路径表示相对概念,不需要从盘符开始,首先需要找到一个参考点(就是Python文件本身)
1.2.2 写入文件(write函数)
代码示例:其中encoding='utf-8'表示编码方式,用于解决中文乱码问题
# 1、打开文件 f = open('python.txt', 'w', encoding='utf-8') # 2、写入内容 f.write('人生苦短,我学Python!') # 3、关闭文件 f.close()1.2.3 读取文件(read函数)
read(size)方法:主要用于文本类型或者二进制文件(图片、音频、视频…)数据的读取。
size表示要从文件中读取的数据的长度(单位是字符/字节),如果没有传入size,那么就表示读取文件中所有的数据。
读取文件相关方法:
- read(size)
- readline():主要用于文本类型数据的读取
- readlines():按照行的方式读取整个文件,返回一个内容列表,每一行的数据为一个元素
dest_f = open("data/1.txt", 'r') # 一次性读取全部文件: print(dest_f.read()) # 按字符读取:⭐️ while True: char = dest_f.read(3) if len(char) == 0: break print(char) # 按行读取:⭐️ while True: line = dest_f.readline() if len(line) == 0: break print(line, end='') # 一次读取所有行 print(dest_f.readlines())1.2.4 关闭文件(close函数)
2. os模块方法
2.1 文件操作相关方法
案例:把Python项目目录下的python.txt文件,更名为linux.txt,休眠20s,刷新后,查看效果,然后对这个文件进行删除操作。
# 第一步:导入os模块 import os # 第三步:引入time模块 import time # 第二步:使用os.rename方法对python.txt进行重命名 os.rename('python.txt', 'linux.txt') # 第四步:休眠20s time.sleep(20) # 第五步:删除文件(linux.txt) os.remove('linux.txt')2.2 文件夹操作相关方法
代码示例:
# 导入os模块 import os # 1、使用mkdir方法创建一个images文件夹 if not os.path.exists('images'): os.mkdir('images') if not os.path.exists('images/avatar') os.mkdir('images/avatar') # 2、getcwd = get current work directory print(os.getcwd()) # 3、os.chdir,ch = change dir = directory切换目录 os.chdir('images/avatar') print(os.getcwd()) # 切换到上一级目录 => images os.chdir('../../') print(os.getcwd()) # 4、使用os.listdir打印当前所在目录下的所有文件,返回列表 print(os.listdir()) # 5、删除空目录 os.rmdir('images/avatar')2.3 文件夹删除补充
# 导入shutil模块 import shutil # 递归删除非空目录 shutil.rmtree('要删除文件夹路径') #(递归删除、慎重!)递归删除文件夹的原理:理论上,其在删除过程中,如果文件夹非空,则自动切换到文件夹的内部,然后把其内部的文件,一个一个删除,当所有文件删除完毕后,返回到上一级目录,删除文件夹本身。
2.4 with-open
主要是针对于文件操作的, 即: 你再也不用手动 close()释放资源了, 该语句会在 语句体执行完毕后, 自动释放资源.格式:
with open('路径', '模式', '码表') as 别名, open('路径', '模式', '码表') as 别名: 语句体