Python程序设计基础 课件 第10章 文件_第1页
Python程序设计基础 课件 第10章 文件_第2页
Python程序设计基础 课件 第10章 文件_第3页
Python程序设计基础 课件 第10章 文件_第4页
Python程序设计基础 课件 第10章 文件_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Python程序设计第10章文件第10章文件信息工程学院计算机工程系湖州师范学院Python程序设计Python课程组主讲:XXXXX目录/CONTENT02文件读写————————————————————————————01文件概念——————————————————————03读写CSV文件——————————————————————文件导图所谓“文件”一般指存储在外部介质上数据的集合,是存储数据的一种常用方式。这些数据可以进行反复修改和重复使用。一篇文章、一段音频、一段视频、一个Python的源程序、一个可执行程序,都可以被保存为一个文件,并赋予一个文件名。文件名一般由主文件名和文件扩展名组成。例如,my.py就是一个文件名,其中“my”是主文件名,“.py”是扩展名,一般扩展名可以体现文件的类型,“.py”说明该文件是一个Python的源程序,“.docx”则是一个word文档。10.1文件概念(1)可以使用文本编辑器编辑查看文件内容,例如可以使用windows的记事本可以编辑查看“.txt”文件。(2)本质上还是二进制文件,因为数据在磁盘上最终是以二进制形式存放的。10.1文件概念特点1.文本文件文本文件是由单一特定编码组成的文件。常见的编码有ASCII、Unicode等编码方式。比如在windows下的“.txt”文件就是非常常用的文本文件。文本的编码方式一般默认为ANSI编码方式,但ANSI并不是某一种特定的字符编码,而是在不同的系统中,ANSI有不同的编码方式。在英文系统中ANSI编码其实是ASCII编码;在中文系统中ANSI编码其实是GBK编码。10.1文件概念(1)ANSI编码2.文本文件的编码计算机只能识别0、1这种二进制的信息,字节是计算机的最小处理单元。一个字节占8个二进制位,也就是说在计算机中最小可以处理8位的二进制数。同时,在计算机上存储的数据也是以字节为单位的信息,在读取计算机上的信息时就是读取的二进制的这些0、1组成的数字信息。常用的编码方式有ASCII、UTF-8、GBK、GB2312以及Unicode。Unicode也称为统一码、万国码、单一码是一种在计算机上使用的字符编码。Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定每个字符和符号最少由16位来表示(2个字节)。因此Unicode解决之前不同编码系统的冲突和乱码问题。10.1文件概念(3)Unicode编码(2)GBK2312编码《信息交换用汉字编码字符集》是由中国国家标准总局1980年发布,标准号是GB2312—1980,所以简称为GB2312,是简体中文的字符集编码。每个汉字及符号以两个字节来表示。第一个字节称为“高位字节”(也称“区字节)”,第二个字节称为“低位字节”(也称“位字节”),因此也称区位码。10.1文件概念(4)UTF-8编码Unicode标准的字符集中每一个字符的字符代码都是用4个字节来表示的,而实际上字母、数字原本仅需一个字节编码,中文汉字的字符代码也都集中在65535之前只需要2个字节,很少使用需要超过两个字节大于65535的字符代码。而UTF-16和UTF-32采用固定长度的编码方式也能够对全球语言的字符或符号进行编码,但不管是西文还是像亚洲的中日韩都使用统一的长度来存储,相对来说比较浪费空间。UTF-8编码具有:变长特性与ASCII的兼容性良好的自动纠错性能利于传输扩展的优点10.1文件概念特点3.二进制文件二进制文件直接由比特0和1组成,没有统一字符编码形式。一般情况下数据的组织格式与数据的使用相关。这类文件比较适合图形图像文件、音频视频文件。(1)保存的内容一般不是给人直接阅读的,而是提供给其它软件使用。(2)二进制文件不能使用文件编辑软件查看。10.1文件概念4.文件指针

文件指针是一个重要的概念,Python在进行文件读写操作时用于标识当前位置的一个概念。记录了文件中读写操作将要发生的位置,可以通过移动指针来改变读写的位置。文件指针是一个表示文件当前位置的指针,它指向文件中将要进行读写操作的位置。通过文件指针,可以控制读写操作在文件中的具体位置,从而实现精确的读写控制。作用:10.2文件读写2.打开文件步骤10.2.1文件打开与关闭打开文件

读/写文件

关闭文件。1.文件路径简介文件路径用来指明文件在计算机上的位置。(1)当前工作目录每个正在处理的文件或运行在计算机上的程序,都有一个“当前工作目录”。

(2)绝对路径总是从根文件夹开始,Window系统中以盘符(C:、D:等)作为根文件夹,(3)相对路径相对路径指的是文件相对于当前工作目录所在的位置。对于文件常见的操作有创建、删除、修改权限、读取、写入等操作,而删除和修改权限操作一般由操作系统完成,不在本书中涉及。本章主要介绍文件的读取和写入,只涉及文件内容。要对文件进行读写操作,必须先打开文件,打开或创建文件使用函数open()。10.2文件读写说明10.2.1文件打开与关闭2.打开文件语法格式为:file=open(filename[,mode[,buffering[,encoding[,newline]]]])file是一个标识符,表示将要使用的文件变量。filename是一个字符串,指需要打开的文件名称,可以包含文件路径。mode是一个字符串,表示文件的使用方式(表10.1中列出了文件的使用方式)。buffering是一个整数,是可选参数,0表示无缓冲(仅允许在二进制模式下),1表示行缓冲(仅在文本模式下可用),大于1的整数以指示固定大小的块缓冲区的大小(以字节为单位)。如果没有给出buffering参数或值为-1,则采用默认缓冲策略。encoding是一个字符串,用于指定在文本编码模式,一般为utf-8或者gbk,如果encoding没有指定,则根据平台环境来决定使用本地编码。newline是一个字符串,可以取的值有None、\n、\r,、\r\n,用于区分换行符,但是这个参数只对文本模式有效。10.2文件读写10.2.1文件打开与关闭文件打开方式模式功能说明r/rt以只读方式打开文本文件,文件必须存在,否则失败,文件指针指向头字节。r+/rt+以读写方式打开文本文件,文件必须存在,否则失败,文件指针指向头字节。w/wt以只写方式打开文本文件,文件不存在时创建文件,文件存在则清空文件内容,文件指针指向头字节。w+/wt+以读写方式打开文本文件,文件不存在时创建文件,文件存在则清空文件内容,文件指针指向头字节。a/at以追加方式打开文本文件,文件不存在时创建文件,文件指针指向尾字节。a+/at+以读写方式打开文本文件,文件不存在时创建文件,文件指针指向尾字节。x创建一个新文件,并以写模式打开这个文件,如果文件存在,则会产生“FileExistsError”错误rb以只读方式打开二进制文件,文件必须存在,否则失败,文件指针指向头字节。rb+以读写方式打开二进制文件,文件必须存在,否则失败,文件指针指向头字节。wb以只写方式打开二进制文件,文件不存在时创建文件,文件存在则清空文件内容,文件指针指向头字节。wb+以读写方式打开二进制文件,文件不存在时创建文件,文件存在则清空文件内容,文件指针指向头字节。ab以追加方式打开二进制文件,文件不存在时创建文件,文件指针指向尾字节。ab+以读写方式打开二进制文件,文件不存在时创建文件,文件指针指向尾字节。10.2文件读写说明10.2.1文件打开与关闭2.打开文件【例10-1】以只读的方式打开文本文件“a.txt”。>>>f=open("a.txt","r")Traceback(mostrecentcalllast):File"<pyshell#98>",line1,in<module>f=open("a.txt","r")FileNotFoundError:[Errno2]Nosuchfileordirectory:'a.txt'【例10-1】以只写的方式打开文本文件“b.txt”。>>>f=open(“b.txt",“w")打开前文件打开后文件10.2文件读写10.2.1文件打开与关闭3.关闭文件文件操作结束,一般需要关闭文件。close()用于关闭文件。Python在向以文本格式打开的文件中写入数据时,Python出于效率的考虑,会先将数据临时存储到缓冲区中,只有使用close()函数关闭文件时,才会将缓冲区中的数据真正写入文件中。语法格式:file.close(),作用是关闭文件。说明执行代码:f=open("test.txt","w")f.write("Python程序设计")文件中并无内容,如下图所示:10.2文件读写10.2.1文件打开与关闭3.关闭文件文件操作结束,一般需要关闭文件。close()用于关闭文件。Python在向以文本格式打开的文件中写入数据时,Python出于效率的考虑,会先将数据临时存储到缓冲区中,只有使用close()函数关闭文件时,才会将缓冲区中的数据真正写入文件中。语法格式:file.close(),作用是关闭文件。说明执行代码:f=open("test.txt","w")f.write("Python程序设计")f.close()数据正真写入文件中,如下图所示:10.2文件读写读写方法10.2.2文本文件的读写打开文件后,就可以根据文件的打开方式对文件进行读/写操作。以文本文件方式打开文件,程序会按照指定的编码格式读/写文件或按照当前操作系统的编码方式来读/写文件;以二进制文件方式打开文件,程序将按照字节流的方式来读/写文件。表10.2列出常用的文件读写方法。函数功能read([size])读取文件所有内容,若给出参数size,size为读取的长度,以byte为单位。readline([size])读取一行,如果指定了size,有可能返回的只是一行的一部分。readlines([size])把文件每一行作为一个list的一个成员,并返回这个list。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分。write(str)把字符串str写到文件中,write()并不会在str后加上一个换行符。writelines(seq)把序列seq的内容全部写到文件中(多行一次性写入),注意序列中的元素要求为字符串类型。10.2文件读写语法格式及说明10.2.2文本文件的读写1.读取文件数据Python提供三个读取文件数据的函数。三个函数的返回值都是文件内容。下面详细介绍读取文件数据的方法。(1)read()函数read()函数的语法格式为:file.read([size])参数说明:file表示已打开的文件对象。size作为一个可选参数,用于指定一次最多可读取的字符(字节)个数,如果省略,则默认一次性读取所有内容。size表示的是一次最多可读取的字符(或字节)数,因此,即便设置的size大于文件中存储的字符(字节)数,read()函数也不会报错,它只会读取文件中所有的数据。10.2文件读写代码10.2.2文本文件的读写【例10-2】编写程序,读取文件“社会主义核心价值观.txt”的数据并输出。f=open("社会主义核心价值观.txt","r")s=f.read()print(s)f.close()1.读取文件数据(1)read()函数10.2文件读写代码10.2.2文本文件的读写1.读取文件数据(2)readline()函数file.readline([size])参数说明:

file为打开的文件对象。

size为可选参数,用于指定读取每一行时,一次最多读取的字符(字节)数。【例10-3】编写程序,读取文件“社会主义核心价值观.txt”的第一行数据并输出。f=open("社会主义核心价值观.txt","r")s=f.readline()print(s)f.close()【例10-4】编写程序,读取文件“社会主义核心价值观.txt”的数据并输出。f=open("社会主义核心价值观.txt","r")s=f.readline()whiles!="":print(s,end="")s=f.readline()f.close()10.2文件读写代码10.2.2文本文件的读写1.读取文件数据(3)readlines()函数file.readlines([size])参数说明:

file为打开的文件对象。

size为可选参数,用于指定读取每一行时,一次最多读取的字符(字节)数。【例10-5】编写程序,读取文件“社会主义核心价值观.txt”的内容并输出。f=open("社会主义核心价值观.txt","r")lines=f.readlines()forlineinlines:print(line,end="")f.close()10.2文件读写示例10.2.2文本文件的读写2.向文件写入数据把一些数据保存到文件中,实际上就是将数据写入文件。Python提供write()、writelines()两个函数实现将数据写入文件。file.write(string)参数说明:

file表示已经打开的文件对象。

string表示要写入文件的字符串。语法格式为:file.writelines(seq)参数说明:

file表示已经打开的文件对象。

seq表示要写入文件的序列(列表、元组等),序列中的元素为字符串。fi=open("社会主义核心价值观.txt","r")fo=open("社会主义核心价值观_副本.txt","w")s=fi.read()fo.write(s)fi.close()fo.close()fi=open("社会主义核心价值观.txt","r")fo=open("社会主义核心价值观_副本.txt","w")s=fi.readlines()fo.writelines(s)fi.close()fo.close()【例10-7】编写程序。将文件“社会主义核心价值观.txt”复制到同文件夹下文件名为“社会主义核心价值观_副本.txt”的新文件。10.2文件读写示例10.2.2文本文件的读写(3)向文件末尾追加数据以w、w+方式打开文件时,若文件已经存在,会清空文件中的内容。若需要向文件末尾添加内容,则需要以a或a+的方式打开文件。【例10-9】编写程序。向文件“社会主义核心价值观_副本.txt”尾部添加内容“——于2012年11月,中国共产党十八大”。f=open("社会主义核心价值观_副本.txt","a")s="\n——于2012年11月,中国共产党十八大"f.writelines(s)f.close()10.2文件读写代码10.2.2文本文件的读写(4)格式化写入数据使用write(string)函数写入数据时,参数string可以是格式化字符串。【例10-10】编写程序。先输入一个整数n,然后输入n个学生的成绩信息,写到文件“score.txt”。每一行对应一个学生的信息,包括姓名、语文成绩、数学成绩、外语成绩,数据之间以空格分隔。一个学生的成绩占一行,姓名占10列,成绩数据占8列、保留1位小数;数据左对齐。f=open("score.txt","w")n=int(input("输入整数n:"))print("输入n行数据:")foriinrange(n):s=input().split()name=s[0]yuwen=eval(s[1])shuxue=eval(s[2])waiyu=eval(s[3])f.write("{:10}{:<8.1f}{:<8.1f}{:<8.1f}\n".format(name,yuwen,shuxue,waiyu))f.close()10.2文件读写方法10.2.3文件定位文件定位概述文件读写一般时按顺序从开始到结束一个字符/字节、逐行进行的。而在实际应用中,可能需要读取中间的部分数据,或在中间某个位置写入数据。这时就需要将文件指针移动到指定位置。Python提供获取文件当前位置函数tell()、定位到指定位置的函数seek()。函数功能描述fp.tell()返回文件读/写指针的当前位置,以文件的开头为原点。fp.seek(offset[,whence])将文件读/写指针移到offset的位置。Offset要求是正整数。whence可以为0表示从头开始计算,1表示以当前位置为原点计算。2表示以文件末尾为原点进行计算。需要注意,如果文件以a或a+的方式打开,每次进行写操作时,文件指针返回到文件末尾。10.2文件读写示例10.2.3文件定位1.tell()函数语法格式flie.tell()f=open("社会主义核心价值观.txt","r")print("打开文件后,文件指针位置:",f.tell())s=f.readline()whiles!="":print(s,end="")print("读取一行后,文件指针位置:",f.tell())s=f.readline()f.close()tell()函数返回当前位置10.2文件读写示例10.2.3文件定位2.seek()函数语法格式file.seek(offset[,whence])参数说明:

offset参数表示偏移量。

whence参数表示起始位置。其中whence参数可以取三个值:

0:表示文件的起始位置

1:表示文件指针的当前位置

2:表示文件的末尾位置如果不指定whence参数,则默认为0。【例10-11】打开文件“古诗.txt”,为文件内容“湖州”后添加一行。内容为“宋戴表元”。“古诗.txt”文件内容如下。湖州山从天目成群出,水傍太湖分港流。行遍江南清丽地,人生只合住湖州。f=open("古诗.txt","r+")s="宋戴表元"f.seek(5)sy=f.read()f.seek(5,0)f.write(s)f.write(sy)f.close()10.2文件读写示例10.2.4二进制文件的读写二进制文件读写函数与方法read()、write()函数同样可以读写二进制文件。二进制文件只能读写字节字符串(流),字节字符串只需要在字符串前加上b。整数、实数写入二进制文件,首先要将数据转换成字符串,再使用bytes()函数转换成字节字符串,之后再写入二进制文件。【例10-12】二进制文件读写示例。f=open("bin.dat","wb+")s1=b"PythonProgramming\n"s2=1234s3=3.14f.write(s1)f.write(bytes(str(s2)+"\n",encoding="utf-8"))f.write(bytes(str(s3),encoding="utf-8"))f.seek(0)s=f.read()print(s)f.close()10.2文件读写示例10.2.5with…as语句概述与语法格式with语句是Python中一个很常用的控制结构,通常用于文件处理、数据库连接等资源管理。with语句会在语句块执行之前自动调用一个指定对象的上下文管理器,执行完语句块后自动释放该上下文管理器所占用的资源,从而简化了资源管理的代码,并可以保证资源被正确释放,避免了因为忘记关闭资源而导致的一些问题。with语句用于文件读写文件时可以不需要手动关闭文件。语法格式:with表达式[astarget]:代码块withopen("社会主义核心价值观.txt","r")asf:lines=f.readlines()forlineinlines:print(line,end="")withopen("社会主义核心价值观.txt","r")asfi,\open("社会主义核心价值观_副本.txt","w")asfo:s=fi.readlines()fo.writelines(s)10.3读写CSV文件1.CSV文件概念10.3.1CSV文件基本概念CSV文件概述与特点逗号分隔值(Comma-SeparatedValues,CSV),有时也称为字符分隔值,因为分隔字符也可以不是逗号,文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件是电子表格和数据库中最常用的输入、输出文件格式。csv文件是一种通用的、相对简单的文件格式,用以存储表格数据,包括数字或者字符。csv文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。所有记录都有完全相同的字段序列。CSV文件具有格式简单,快速存取,兼容性好等特点,工程、金融、商业等很多数据文件都是采用CSV文件保存和处理。10.3读写CSV文件1.CSV文件概念10.3.1CSV文件基本概念2.创建csv文件(1)使用记事本创建csv文件使用记事本按照csv文件的规则来创建,保存时“保存类型”选择“所有类型”,手动输入文件扩展名“.csv”,然后保存文件csv文件是一种通用的、相对简单的文件格式,用以存储表格数据,包括数字或者字符。csv文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。所有记录都有完全相同的字段序列。10.3读写CSV文件1.CSV文件概念10.3.1CSV文件基本概念2.创建csv文件(2)使用Excel创建csv文件打开Excel,输入相应数据,保存时“保存类型”选择“CSVUTF-8(逗号分隔)(*.csv)”文件即可csv文件是一种通用的、相对简单的文件格式,用以存储表格数据,包括数字或者字符。csv文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。所有记录都有完全相同的字段序列。10.3读写CSV文件1.CSV文件概念10.3.1CSV文件基本概念3.CSV库csv库是Python标准库,无需另外安装直接使用import导入即可使用。csv库实现了csv格式表单数据的读写。其提供了诸如“以兼容Excel的方式输出数据文件”或“读取Excel程序输出的数据文件”的功能,程序员无需知道Excel所采用csv格式的细节。csv库同样可以用于定义其他应用程序可用的csv格式或定义特定需求的csv格式。csv库中的reader类和writer类可用于读写序列化的数据。也可使用DictReader类和DictWriter类以字典的形式读写数据。csv文件是一种通用的、相对简单的文件格式,用以存储表格数据,包括数字或者字符。csv文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。所有记录都有完全相同的字段序列。10.3读写CSV文件1.reader()函数10.3.2读写CSV文件CS文件读写步骤读/写csv文件的一般步骤为:导入csv库

创建csv文件对象(打开csv文件)

读/写csv文件

关闭文件。reader()函数返回一个reader对象(可迭代对象),该对象将逐行遍历csv文件。csv文件的每一行都读取为一个由字符串组成的列表。语法格式为:csv.reader(csvfile,dialect='excel',**fmtparams)参数说明:csvfile必须是csv文件对象。dialect编码风格,默认为excel的风格,也就是使用半角逗号分隔。fmtparams格式化参数,用来覆盖之前dialect对象指定的编码风格。导入CSV库创建CSV对象读/写CSV文件关闭文件10.3读写CSV文件代码示例:10.3.2读写CSV文件1.reader()函数【例10-13】读取文件“jckcj.csv”中的内容。importcsvwithopen("jckcj.csv","r",encoding="utf-8-sig")asf:reader=csv.reader(f)forlineinreader:print(line)输出为:<_csv.readerobjectat0x000001E2B9694400>使用csv模块的reader()函数创建一个reader对象。将打开的文件对象作为参数传递给reader函数。1.reader()函数代码示例:importcsvwithopen("jckcj.csv","r",encoding="utf-8-sig")asf:reader=csv.reader(f)print(reader)输出为:['姓名','大学语文','高等数学','Python','大学英语']['赵江一','64','75','80','77']['万春','86','92','88','90']['李俊','67','79','78','68']['石建飞','85','83','93','82']['李小梅','90','76','87','78']['祝燕飞','80','68','70','88']10.3读写CSV文件示例:10.3.2读写CSV文件2.DictReader()函数DictReader()函数返回一个reader对象,该对象以字典的形式存放csv文件的内容,DictReader()将每行中的数据映射到一个dict,以csv文件的第一行内容(字段名)作为字典的关键字,第二行开的每一个单元格中的数据内容作为字典的值。语法格式为:csv.DictReader(csvfile)其中csvfile为csv文件对象。将例10-13程序改为如下代码。importcsvwithopen("jckcj.csv","r",encoding="utf-8-sig")asf:reader=csv.DictReader(f)forlineinreader:print(line)10.3读写CSV文件4.write()函数10.3.2读写CSV文件3.writer()函数writer()函数只是创建一个csv文件的写入器,要向csv文件写入数据,必须使用write()、writerow()、writerows()函数。其语法格式为:writer(csvfile,dialect='excel',**fmtparams)参数说明:csvfile必须是支持可迭代(Iterator)的对象,可以是文件(file)对象或者列表(list)对象。dialect编码风格,默认为excel的风格,也就是使用逗号,分隔。fmtparams格式化参数,用来覆盖之前dialect对象指定的编码风格。可以使用函数write()函数向csv文件写入数据,但不会自动换行。【例10-14】write()函数向csv文件写入数据示例。importcsvwithopen("L10-14.csv","w")asf:lst=[["姓名","大学语文","高等数学","Python","大学英语"],["zjh","75","65","89","84"],["lisi","90","56","87","45"],["wangwu","68","88","72","79"]]forcinlst:f.write(",".join(c)+"\n")10.3读写CSV文件示例:10.3.2读写CSV文件5.writerow()函数可以使用函数writerow()函数向csv文件写入一行数据。语法格式:csvfile.writerow(row)csvfile为writer()将row形参写入到writer的文件对象,row为一个列表,open()函数的newline参数未指定newline参数值为“\n”,即系统默认的行分割符“\r\n”。writerow()函数在写入一行数据时在行尾都会跟一个默认换行符“\r\n”,也就是写入一个空行。【例10-15】writerow()函数向csv文件写入数据示例。importcsvwithopen("L10-15.csv","w")asf:lst=[["姓名","大学语文","高等数学","Python","大学英语"],["zjh","75","65","89","84"],["lisi","90","56","87","45"],["wangwu","68","88","72","79"]]writer=csv.writer(f)forcinlst:writer.wri

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论