




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学习目标了解掌握熟悉Python语言中字节流与字符流的概念13文件与目录的操作方法2文件操作流程本章主讲内容主讲内容Speechcontent4.2目录操作4.1文件操作4.3小结文件与目录操作
在计算机中,用python或其他语言编写的应用程序在运行过程中要把数据永久保存起来,就必须把数据以文件形式保存到硬盘中,程序经常也要从硬盘读取文件,这就涉及到应用程序要操作硬件。
有了文件的概念,用户无需再去考虑操作硬盘的细节,只需要关注操作文件的流程即可完成文件操作。
目录是存放文件的场所,与文件操作关系密切。主讲内容Speechcontent4.1.2文件读写操作4.1文件操作1.1Python简介4.1.1文件的打开操作4.1.3文件操作相关方法与With语句文件的打开操作1、文件操作流程操作文件的流程分为3步:第1步
打开文件,得到文件句柄并赋值给一个变量;第2步
通过句柄对文件进行操作,如读、写等;第3步
关闭文件。文件的打开操作2、打开文件方法--Open格式:open(file_name[,mode[,buffering],[,encoding]]])。功能:该函数是打开一个文件,返回一个指向文件的指针(一个文件对象)的文件句柄。说明:name参数表示需要打开的文件名称。文件名称可以是相对路径,也可以是绝对路径。Mode用于指定打开模式。buffering用来控制文件的缓冲,默认值为0,表示没有缓冲,如果设置为1就会有缓冲。如果将buffering的值设为大于1的整数,该整数就是缓冲区大小的字节数。文件的打开操作2、打开文件方法--OpenEncoding:
指定返回数据的编码格式,一般为utf8或gbk。
注意:如果有缓冲,向文件写入时,若缓冲区满了则自动写入文件中,否则,需要使用flush()或close()方法,才能把数据写入到文件。文件的打开操作2、打开文件方法--OpenEncoding:
指定返回数据的编码格式,一般为utf8或gbk。
注意:如果有缓冲,向文件写入时,若缓冲区满了则自动写入文件中,否则,需要使用flush()或close()方法,才能把数据写入到文件。文件的打开操作字符作用‘r'读模式。默认模式,文件必须存在,不存在则抛出异常。文件指针将会放在文件的开头。‘w'写模式。此模式不可读,文件不存在则创建,存在则清空内容再写。‘a'追加写模式。此模式不可读,文件不存在则创建,文件存在则在文件后追加内容。
‘b'
二进制模式。对于非文本文件(如图片文件、视频文件等),只能使用b模式,“b”表示以字节的方式操作。‘t'文本模式。‘+'表示可以同时读写某个文件,如r+读写,w+写读,a+,写读。3、打开模式文件的读写操作文件的读写操作包括字符流与字节流的读写操作。方法作用read([size])从文件当前位置起读取size个字符,若无参数size,则表示读取至文件结束为止,该函数返回一个字符串对象。
注意:如果文件大于可用内存,不可使用该方法读取。readline([size])读取整行内容,包括“\n”字符,光标移动到下一行首。如果指定了一个非负数的参数,则返回指定大小的字符数,包括
"\n"字符。readlines([size])方法用于读取所有行(直到文件结束符
EOF)并返回一个列表,若给定size>0,返回总和大约为size字节的行,实际读取的值可能比size较大,因为需要填充缓冲区。如果碰到结束符
EOF则返回空字符串。1、字符流的读操作方法文件的读写操作2、字符流的写操作方法方法作用write([str])参数str是要写入文件的字符串,该函数的返回值是写入的字符长度。writelines(sequence)参数是序列,比如列表,它会迭代写入文件。Writelines方法比write方法效率要高。
注意:在文件关闭或缓冲区刷新前,字符串内容仅存储在缓冲区中,此时,在文件中是看不到写入的内容的。文件的读写操作3、字符流操作示例示例:已知在D盘的根目录下有一个文本文件mytext.txt,文件的内容如下:独坐敬亭山
众鸟高飞尽,孤云独去闲。相看两不厌,只有敬亭山。文件的读写操作3、字符流操作示例-------------------------------------------------------------------file_handle=open(‘d:\mytext.txt’,“r”)
print(file_handle.read())#输出文档的全部内容
print(file_handle.read(8))#输出文档的前8个字符,回车符也是字符
print(file_handle.readline())#输出文本的当前行
print(file_handle.readlines())#输出文本对应的列表,输出的列表是:['独坐敬亭山\n','\n','众鸟高飞尽,\n','孤云独去闲。\n','相看两不厌,\n','只有敬亭山。\n’]。-------------------------------------------------------------------文件的读写操作3、字符流操作示例下列程序能把mytext文件中的内容原样输出:-------------------------------------------------------------------------------file_handle=open('d:\mytext.txt',"r")
foriinfile_handle.readlines():
print(i.strip())#print方法输出时会下起一行,直接打print(i)会输一个空行,使用strip方法把空行删除。-------------------------------------------------------------------------------文件的读写操作3、字符流操作示例下列程序能把mytext文件中的第3行内容输出。-------------------------------------------------------------------------------file_handle=open('d:\mytext.txt',"r",encoding="GBK")
count=0
foriinfile_handle.readlines():
count+=1
ifcount==3:
print(i.strip())-------------------------------------------------------------------------------文件的读写操作3、字符流操作示例示例:-------------------------------------------------------------------------------file_handle=open('d:\mytext.txt',"a")#以追加模式打开文件
context="\n静夜思\n床前明月光,\n疑是地上霜。\n举头望明月,\n低头思故乡。\n"
file_handle.write(context)#把字符串以追加的模式写入文件中file_handle.close()#关闭文件-------------------------------------------------------------------------------运行完程序后,再打开mytext.txt文件,就会看到追加的内容。文件的读写操作3、字符流操作示例上述示例用writelines(sequence)方法来实现的程序代码如下:-------------------------------------------------------------------------------file_handle=open('d:\mytext.txt',"a")#以追加模式打开文件
context_list=["\n","静夜思\n","床前明月光,\n","疑是地上霜。\n","举头望明月,\n","低头思故乡。\n"]
file_handle.writelines(context_list)#把列表以追加的模式写入文件中
file_handle.close()#关闭文件-------------------------------------------------------------------------------文件的读写操作4、文件操作的主要方法方法作用Close()
关闭文件。Flush()
刷新文件内部缓冲,直接把内部缓冲区的数据写入文件,而不是被动地等待输出缓冲区写入。Fileno()
返回一个整型的文件描述符,主要用于如os模块的read方法等一些底层操作上。next()
返回文件下一行。Tell()
返回文件当前位置Seek(offset[,whence]
设置文件当前位置。offset
−这是文件中读/写指针的位置。whence
−可选的,默认为0,表示绝对文件定位,其他值为1,指相对于当前位置进行搜索,2表示相对于文件的末尾进行搜索。readable()
文件是否可读。该函数值如果为true,就可以读取相应文件,如果为false,就不能读取文件。writable()文件是否可写。该函数值如果为true,就可以向相应文件写数据,如果为false,就不能向文件写数据。文件的读写操作5、字节流的写操作方法
对于字节流文件(一切非字符型文件,包括媒体文件、可执行文件、压缩包等等)则需要使用字节读写模式来进行相应的读写操作。与字符读写模式相对应,字节流读写模式有四种:rb,wb,ab,xb,分别对应字节流只读、字节流覆写、字节流追加与字节流创写。with语句
在python的文件操作中,事先需要打开文件获取文件句柄,才能对文件进行读写操作,且最后要求关闭操作的文件。但作为一位编程人员在用Python编写文件操作程序时经常存在2种可能情况,一是忘记关闭文件句柄,二是存在文件读取数据发生异常,却没有进行任何处理。对于这种场景,Python的with语句提供了一种非常方便的处理方式来帮助编程人员解决这些问题。with语句withopen("d:/chenzhen.jpg","rb")asimage_file1,open("d:/chenzhen1.jpg","wb")asimage_file2:
iBytes=image_file1.read()
image_byte_count=image_file2.write(iBytes)
print("写入的字节数量是%d"%(image_byte_count))
图片文件的读写示例本章主讲内容主讲内容Speechcontent4.2目录操作4.1文件操作4.3小结主讲内容Speechcontent4.2.2目录操作方法4.2目录操作1.1Python简介4.2.1目录操作中路径的概念4.2.3os.path模块4.2.4遍历文件夹综合案例目录
目录也称为文件夹。在计算机中,由于文件是保存在目录中的,因此,对文件操作过程中需要对目录进行操作。python自带的os模块中提供了大量操作目录的方法,使用起来非常方便。os模块是Python标准库中一个用于访问操作系统功能的模块,os模块提供了一种可移植的方法来使用操作系统的功能。使用os模块中提供的接口,可以实现跨平台访问,便于编写跨平台的应用。
在使用os模块的时候,如果使用过程中出现了异常,os模块就会抛出OSError异常,异常主要是无效的路径名或文件名,或者给出的路径名或文件名无法访问,或者当前使用的系统不支持等原因。目录操作中路径的概念
绝对路径:是指从磁盘的根目录开始,找到相应目录或文件的路径。比如r"d:\python\"就是一个绝对路径。在Python中,当使用“\”时,最好在路径前加r,或者使用/或\\。
相对路径:是指从当前所在目录开始,找到相应目录或文件的路径。在相对路径中,“.”表示当前目录,“..”表示上级目录。比如:“../python/”就是一个相对路径,表示与文件操作目录同级的目录操作目录。目录操作方法1.获取当前目录位置importos
current_direct=os.getcwd()
print(current_direct,type(current_direct))#输出如下:D:\test<class'str'>
目录操作方法2.创建子目录
创建子目录的方法是mkdir(path)。括号中的参数描述的是创建子目录的路径,路径可以是相对路径,也可以绝对路径。注意:如果目录已经存在,就会报发生异常。importos
os.mkdir(r'd:\ddddd’)
os.mkdir(r'd:\ddddd')Traceback(mostrecentcalllast):File"D:/test/service1.py",line2,in<module>os.mkdir(r'd:\ddddd')FileExistsError:[WinError183]当文件已存在时,无法创建该文件。:'d:\\ddddd'
目录操作方法3.目录重命名>>>importos>>>os.rename(r'F:\finthon',r'F:\python')目录操作方法4.获取目录下的所有文件importos
list1=os.listdir(r'd:\\’)
print(list1)
3.目录重命名>>>importos>>>os.rename(r'F:\finthon',r'F:\python')目录操作方法
5.删除目录
删除目录的方法是rmdir(path)。需要注意的是rmdir()方法只能删除空目录,如果文件夹中包含内容,则会产生异常。因此,使用该方法删除文件夹前需先将文件夹中的文件删除才能删除文件夹。如果是递归删除目录可使用removedirs(path)方法。
6.删除文件
删除指定路径下的文件的方法是remove(path),如果指定的路径是一个目录,将抛出OSError异常。目录操作方法
7.遍历文件夹
遍历文件夹使用walk()方法,方法的格式如下:walk(top,topdown=True,onerror=None,followlinks=False)
top:遍历目录的路径;topdown为真,则优先遍历top目录,否则优先遍历top的子目录(默认为真);onerror需要一个callable对象,当walk产生异常时,会被调用。
followlinks为真,则会遍历目录下的目录(默认为假)。4.2.3os.path模块1.os.path.abspath(path)
作用:返回path规范化的绝对路径。示例:>>>importos>>>os.path.abspath('test.csv')'C:\\Users\\chenzhen\\test.csv'4.2.3os.path模块2.os.path.split(path)
作用:将path分割成目录和文件名二元组返回。>>>os.path.split('C:\\Users\\chenzhen\\test.csv')('C:\\Users\\chenzhen','test.csv')>>>
4.2.3os.path模块3.os.path.dirname(path)作用:返回path的目录。其实就是os.path.split(path)的第一个元素。>>>os.path.dirname('C:\\Users\\chenzhen\\test.csv')'C:\\Users\\chenzhen'4.2.3os.path模块4.os.path.basename(path)
作用:返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素。>>>os.path.basename('C:\\Users\\chenzhen\\test.csv')'test.csv'4.2.3os.path模块5.monprefix(list)作用:返回列表中所有path共有的最长的路径。>>>monprefix(['/home/td','/home/td/aa','/home/td/bb'])'/home/td'4.2.3os.path模块6.os.path.exists(path)
作用:如果path存在,返回True;如果path不存在,返回False。
>>>os.path.exists('c:\\')True>>>os.path.exists('C:\\Users\\chenzhen\\test.csv')False4.2.3os.path模块7.os.path.isabs(path)
作用:如果path是绝对路径,返回True。8.o
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商务合同续签协议书
- 项目代建协议合同
- 居民采暖供用热合同
- 委托船舶单项其它工程服务合同
- 设计类合同协议
- 墙地砖劳务分包合同
- 美容院顾客服务效果免责协议
- 搬迁协议搬迁运输合同
- 供应商协议书范本
- 水质检测合同
- 2.1 坚持依宪治国 教案 -2024-2025学年统编版道德与法治八年级下册
- 元宇宙视域下非遗保护与传播途径探究
- 【语文试卷+答案】2024-2025学年泉州高二上期末质检
- 2025代运营合同范本
- 《修缮定额讲解》课件
- 家庭燃气和煤气防火安全
- 第十一章《功和机械能》达标测试卷(含答案)2024-2025学年度人教版物理八年级下册
- 大学学生宿舍管理员工作培训
- 初三物理常识试卷单选题100道及答案
- 初中新课标培训课件
- 办公用品价格清单
评论
0/150
提交评论