python键盘上下左右(不会还有人不了解with语句和上下文管理器吧?)python初学 / python上下文管理器与with语句...

wufei123 发布于 2024-05-15 阅读(37)

文件操作文件操作的作用把一些内容(数据)存储存放起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力文件的基本操作:可以只打开和关闭文件,不进行任何读写操作打开 使用open函数, 可以打开一个已经存放的文件, 或者创建一个新的文件,

语法:open(name, mode)name: 是要打开的目录文件名的字符串(可以包含文件所在的具体位置)mode: 设置文件的模式(访问模式):只读、写入、追加等例如:f = open(test.txt, w)

# 注意: 此时的f是open函数的文件对象访问模式:模式描述r以只读方式打开文件文件的指针将会放在文件的开头这是默认模式rb以二进制格式打开一个文件用于只读文件指针将会放在文件的开头这是默认模式r+打开一个文件用于读写。

文件指针将会放在文件的开头rb+以二进制格式打开一个文件用于读写文件指针将会放在文件的开头w打开一个文件只用于写入如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除如果该文件不存在,创建新文件。

wb以二进制格式打开一个文件只用于写入如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除如果该文件不存在,创建新文件w+打开一个文件用于读写如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。

如果该文件不存在,创建新文件wb+以二进制格式打开一个文件用于读写如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除如果该文件不存在,创建新文件a打开一个文件用于追加如果该文件已存在,文件指针将会放在文件的结尾。

也就是说,新的内容将会被写入到已有内容之后如果该文件不存在,创建新文件进行写入a+打开一个文件用于读写如果该文件已存在,文件指针将会放在文件的结尾文件打开时会是追加模式如果该文件不存在,创建新文件用于读写。

ab以二进制格式打开一个文件用于追加如果该文件已存在,文件指针将会放在文件的结尾也就是说,新的内容将会被写入到已有内容之后如果该文件不存在,创建新文件进行写入ab+以二进制格式打开一个文件用于追加如果该文件已存在,文件指针将会放在文件的结尾。

如果该文件不存在,创建新文件用于读写主访问模式的特点:# r: 如果文件不存在,报错; 不支持写入操作,表示只读 f = open(test1.txt,r) f = open(test.txt,r) f.write(aa)

f.close()# w:只写,如果文件不存在,新建文件; 如果执行写入会覆盖原有内容 f = open(1.txt,w) f.write(bbb) f.close() # a:追加,如果文件不存在,新建文件; 在原有内容基础上追加新内容

f = open(2.txt,a) f.write(xyz) f.close()# 访问模式参数是否可以省略, 如果省略表示访问模式为r f = open(1.txt) f.close() 访问模式特点2:

# r+: r+没有该文件则报错; r特点:文件指针在开头,所以能读取出来数据 f = open(test1.txt, r+) f = open(test.txt, r+) # w+: 没有该文件会新建文件; w特点: 文件指针在开头,用新内容覆盖原内容.

f = open(test1.txt, w+) f = open(test.txt, w+) # a+: 没有该文件会新建文件; a特点: 文件指针在结尾,无法读取数据(文件指针后面没有数据) f = open(test100.txt, a+)

f = open(test.txt, a+) con = f.read() print(con) f.close() 写语法:文件对象. write(内容)例如:# 1. 打开文件 f = open(test.txt, w)

# 2. 文件写入 f.write(hello world)# 3. 关闭文件 f.close() # 注意:# 1. w和a模式: 如果文件不存在则创建文件;如果文件存在,w模式先清空再写入, a模式直接末尾追加

# 2. r模式: 如果文件不存在则报错读语法一:文件对象.read(num)num表示要从这个文件中读取的数据的长度(单位是字节), 如果没有传入num,那么就表示读取文件中的所有的数据例如:f = open(test.txt,r)

# 文件内容如果换行:底层有\n,会有字节的占位,导致read书写参数读取出来的眼睛看到的个数和参数值不匹配# read不写参数表示读取所有的;# print(f.read()) print(f.read(10)) f.close()

语法二:文件对象.readlines()readlines可以按照行的方式把整个文件中的内容进行一次性读取,并返回的是一个列表,其中一行的数据为一个元素例如:f = open(test.txt) content = f.readlines()

# [hello world\n, abcdefg\n, aaa\n, bbb\n, ccc] print(content) 语法三:文件对象.readline()readline()一次读取一行内容f = open(test.txt,r)

content = f.readline() print(f第一行:{content}) content = f.readlin() pint(f第二行:{content}) # 关闭文件 f.close()

语法四:文件对象.seek(偏移量, 起始位置)起始位置:0:文件开头 1:当前位置 2:文件结尾# f = open(test.txt, r+) f = open(test.txt, a+)# 1. 改变读取数据开始位置

# f.seek(2,0)# 1. 文件指针放在结尾(无法读取数据)# f.seek(0,2) 2. a 改变文件指针的位置,做到可以读取出来数据# f.seek(0,0) f.seek(0) con = f.read()

print(con) f.close() 关闭语法:文件对象.close()文件备份文件备份的步骤接收用户输入的文件名规划备份文件名备份文件写入数据例如:# 1. 用户输入目标文件 sound.txt.mp3

old_name = input(请输入您要备份的文件名:) # print(old_name)# print(type(old_name))# 2. 规划备份文件的名字# 2.1 提取后缀 -- 找到名字中的点 -- 名字和后缀分离 -- 最右侧的点才是后缀的点 -- 字符串查找某个子串rfind

index = old_name.rfind(.) # print(index)# 2.2 组织新名字 = 原名字 + [备份] + 后缀# 原名字就是字符串中的一部分子串 -- 切片[开始:结束:步长]

# print(old_name[:index])# print(old_name[index:])# 4. 思考: 有效文件才备份 .txtif index > 0:# 提取后缀 postfix = old_name[index:]

new_name = old_name[:index] + [备份] + postfix print(new_name) # 3. 备份文件写入数据(数据和原文件一样)# 3.1 打开 原文件 和 备份文件

old_f = open(old_name, rb) new_f = open(new_name, wb)# 3.2 原文件读取, 备份文件写入# 如果不确定目标文件大小,循环读取写入,当读取出来的数据没有了终止循环

whileTrue: con = old_f.read(1024)if len(con) == 0: # 表示读取完成了break new_f.write(con) # 3.3 关闭文件old_f.close()

new_f.close()文件和文件夹操作os模块使用在Python中文件和文件夹的操作要借助os模块里面的相关功能步骤:导入os模块import os b.使用os模块相关功能os.函数名() 文件重命名

os.rename(目标文件名, 新文件名) 删除文件os.remove(目标文件名) 创建文件夹os.mkdir(文件夹名字) 删除文件夹os.rmdir(文件夹名字) 获取当前目录os.getcwd()

改变默认目录os.chdir(目录) 获取目录列表os.listdir(目录)

with语句和上下文管理器with语句的作用python提供了with语句的写法, 即简单又安全文件操作的时候使用with语句可以自动调用关闭文件操作,即使出现了异常也会自动调用关闭文件操作文件使用完后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的。

上下文管理器with语句之所以这么强大,背后是由上下文管理器做支撑的也就是说使用f = open(xxx)中的open函数创建的f文件对象就是一个上下文管理器对象什么是上下文管理器?一个类只要实现了__enter__()和__exit__()这两个方法

通过该类创建的对象我们就称之为上下文管理器classFile(object):# 初始化方法def__init__(self, file_name, file_mode1): # 定义变量保存文件名和打开模式

self.file_name = file_name self.file_mode1 = file_mode1 # 上文方法def__enter__(self): print(进入上文的方法)# 返回文件资源

self.file = open(self.file_name, self.file_mode1)return self.file # 下文方法def__exit__(self, exc_type, exc_val, exc_tb):

print(进入下文的方法) self.colose() __enter__表示上文方法,需要返回一个操作文件的对象__exit__表示下文方法,with语句执行完成后会自动执行,即使出现异常也[原创]禁止转载

最后,小编想说:我是一名python开发工程师,整理了一套最新的python系统学习教程,想要这些资料的可以关注私信小编“01”即可(免费分享哦)希望能对你有所帮助

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

河南中青旅行社综合资讯 奇遇综合资讯 盛世蓟州综合资讯 综合资讯 游戏百科综合资讯 新闻4566