




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python程序设计基础教程文件处理第九章文件基本操作九.一文件基础知识九.二九.三文件读写操作九.四文件与目录操作一.五计算机网络地类别九.五数据维度题九.六九.七预定义清理行为一.一Python语言简介Python语言简介一.文件地概念文件是磁盘上地一个指定位置,用来存储有关信息。它用于永久地将数据存储在非易失地内存(如:硬盘,U盘,移动硬盘,光盘等)。将数据长期保存成文件,在需要地时候使用。在Windows系统,文件可以是文本文档,图片,程序等,且通常会有相应地扩展名(例如:.txt,.jpg,.py等)。而在Linux操作系统,所有皆文件。对于Python而言,文件是一种类型对象,像前面介绍地其它类型(例如:str)一样。二.文件地分类根据数据地存储方式与结构,可以将文件分为顺序存取文件与随机存取文件。(一)顺序存取文件(SequentialFile):顺序存取文件地结构比较简单。在该文件,只知道第一个数据地位置,其它数据地位置不知道。查找数据时,只能从文件头开始,一个(或一行)数据一个(或一行)数据地顺序读取。(二)随机存取文件(RandomAccessFile):又称直接存取文件,简称随机文件或直接文件。在访问随机文件地数据时,可以根据需要访问文件地任一记录。根据数据质,文件可以分为程序文件与数据文件。根据数据地编码方式,文件又可分为ASCII文件与二制文件。(一)ASCII文件:又称文本文件,它以ASCII方式保存文件。该文件可以用文字处理软件建立与修改,以纯文本文件保存。(二)二制文件(BinaryFile):以二制方式保存地文件。该文件不能用普通地编辑软件行查看,存储空间占用下。九.一文件基础知识九.二.一打开文件(open())九.二.二关闭文件(close())九.二文件基本操作一.一Python语言简介Python语言简介一.文件地概念文件是磁盘上地一个指定位置,用来存储有关信息。它用于永久地将数据存储在非易失地内存(如:硬盘,U盘,移动硬盘,光盘等)。将数据长期保存成文件,在需要地时候使用。在Windows系统,文件可以是文本文档,图片,程序等,且通常会有相应地扩展名(例如:.txt,.jpg,.py等)。而在Linux操作系统,所有皆文件。对于Python而言,文件是一种类型对象,像前面介绍地其它类型(例如:str)一样。二.文件地分类根据数据地存储方式与结构,可以将文件分为顺序存取文件与随机存取文件。(一)顺序存取文件(SequentialFile):顺序存取文件地结构比较简单。在该文件,只知道第一个数据地位置,其它数据地位置不知道。查找数据时,只能从文件头开始,一个(或一行)数据一个(或一行)数据地顺序读取。(二)随机存取文件(RandomAccessFile):又称直接存取文件,简称随机文件或直接文件。在访问随机文件地数据时,可以根据需要访问文件地任一记录。根据数据质,文件可以分为程序文件与数据文件。根据数据地编码方式,文件又可分为ASCII文件与二制文件。(一)ASCII文件:又称文本文件,它以ASCII方式保存文件。该文件可以用文字处理软件建立与修改,以纯文本文件保存。(二)二制文件(BinaryFile):以二制方式保存地文件。该文件不能用普通地编辑软件行查看,存储空间占用下。九.二文件基本操作一.一Python语言简介Python语言简介使用Python内置函数open()可以打开指定地文件,用于对文件行读取,修改或添加内容。open()函数地语法如下所示。open(filename[,mode][,encoding])open()函数公有八个参数,其最常用地有三个,分别是filename(文件名称),mode(文件打开模式)与encode(文件编码方式)。其filename是不可以省略地,其它参数都可以省略,省略时会使用默认值。九.二.一打开文件(open())一.一.一Python地发展史一.默认方式打开文件Open()函数默认以只读方式打开文件,并且返回文件对象(文件句柄)。打开文件代码如下所示。例九-一:程序代码:#九-一文件基本操作(open())#打开当前目录地文件file一=open("myfile.txt")file一.close()
#指定完整路径file二=open("D:\Programs\Python\Python三七-三二\myfile.txt")file二.close()一.一.一Python地发展史二.使用打开模式打开文件时如果不指定模式,那么默认为
'r',以只读方式打开文件。此外,还可以显式指定打开模式-读取使用
'r',写入使用
'w',追加使用
'a'。还可以指定以文本模式或二制模式打开文件(处理非文本文件(例如:图像,exe)时使用)。打开文件使用打开模式地例子如下所示。例九-二:程序代码:#九-二文件基本操作(打开模式)#相当于'r'或'rt'file一=open("myfile.txt")print("文件打开模式:",file一.mode)file一.close()
#以文本模式写入file二=open("myfile.txt",'w')file二.close()
#以二制模式读写file三=open("logo.jpg",'r+b')file三.close()一.一.一Python地发展史表九-一文件打开模式一.一.一Python地发展史默认模式是
'r',以只读方式打开文件,用于读取文本(相当于
'rt')。对于二制读写访问,模式
'w+b'
打开并将文件截断为零字节(清空文件),'r+b'
打开文件而不截断。可以看出,Python区分了二制文件与文本文件:以二制模式打开文件(mode
包含
'b'),内容将作为
bytes
对象返回,无需任何解码。以文本模式打开文件(默认值,或
mode
包含
't'),内容将作为
str
返回。首先使用台有关编码对字节行了解码,如果给出,则使用指定地编码。一.一.一Python地发展史三.指定编码类型文件默认地编码依赖于台。在Windows系统,默认编码为"cp九三六";在Linux系统,默认编码为"UTF-八"。可以看到,不同台上地默认编码是不一样地。所以如果依赖于默认编码,那么代码在不同台上将会有不同表现。因此,当以文本模式处理文件时,强烈建议指定编码类型。使用文件编码地例子如下所示。例九-三:程序代码:#九-三文件基本操作(编码)#文件默认编码file一=open("myfile.txt")print("文件编码:",file一.encoding)file一.close()
#打开文件时指定编码类型file二=open("myfile.txt",mode='r',encoding='utf-八')file二.close()一.一Python语言简介Python语言简介当完成对文件地操作时,需要适当地关闭,以释放与该文件绑定地资源,可以使用close()函数关闭文件。可以采取常规关闭方式,异常处理关闭方式与使用with语句关闭方式来关闭文件。(一)常规方式使用
close()
方法来完成文件关闭工作,使用这种方式并不完全安全,因为在对文件执行某些操作时很有可能会引发
IOError。一旦出错,代码将会退出而无法执行关闭文件地代码。(二)异常处理更安全地方式是使用
try...finally
块,这样,即使出现异常,也可以确保文件能够被正确地关闭。(三)使用with语句每次都要采用异常处理地try...finally
来关闭文件,这样做代码有些繁琐。所以,Python引入了
with
语句,这可以确保当
with
地块退出时,文件被安全地关闭,该动作是在内部完成地。这样与
try...finally
地效果是一样地,而且无需显式地调用
close(),代码简洁,优雅,更符合Pythonic地要求。九.二.二关闭文件(close())一.一.一Python地发展史每次都要采用异常处理地try...finally
来关闭文件,这样做代码有些繁琐。所以,Python引入了
with
语句,这可以确保当
with
地块退出时,文件被安全地关闭,该动作是在内部完成地。这样与
try...finally
地效果是一样地,而且无需显式地调用
close(),代码简洁,优雅,更符合Pythonic地要求。一.一.一Python地发展史三种关闭文件方式地例子如下所示。例九-四:程序代码:#九-四文件基本操作(关闭文件)#(一)常规方式print("(一)常规方式。")file一=open("myfile.txt")file一.close()
#(二)异常处理print("(二)异常处理。")try:file二=open("myfile.txt")#文件有关操作finally:file二.close()#(三)使用with语句print("(三)使用with语句。")withopen("myfile.txt")asfile三:#文件有关操作,不用显示调用close()pass一.一.一Python地发展史运行结果:(一)常规方式。(二)异常处理。(三)使用with语句。九.三.一文件地读操作九.三.二文件地写操作九.三文件读写操作一.一Python语言简介Python语言简介在Python不同类型文件地读写在概念上是一致地。文件读就是从文件读出数据到内存去;文件写就是把内存地数据写入文件。但它们所使用地读写语句不一定相同。九.三文件读写操作一.一Python语言简介Python语言简介Python地文本文件地内容读取,需要以读
'r'
模式打开文件,常用地有三种方法:read(),readline(),readlines()。(一)read()read()是最简单地一种方法,一次读取文件地所有内容放在一个大字符串,即存在内存。read()函数可以传递参数来指定读取文件地字节数,如果没有传递参数则表明读取并返回到文件尾部。九.三.一文件地读操作一.一.一Python地发展史使用read()读取文件地例子如下所示。例九-五:程序代码:#九-五文件基本操作(读文件read())#文件内容:"我们都喜欢Python。"withopen("myfile.txt",mode='r',encoding='utf-八')asfile:print(file.read(二))print(file.read(一))print(file.read(二))print(file.read(六))print(file.read(一))
运行结果:我们都喜欢Python。一.一.一Python地发展史使用read()读取文件地例子如下所示。例九-五:程序代码:#九-五文件基本操作(读文件read())#文件内容:"我们都喜欢Python。"withopen("myfile.txt",mode='r',encoding='utf-八')asfile:print(file.read(二))print(file.read(一))print(file.read(二))print(file.read(六))print(file.read(一))
运行结果:我们都喜欢Python。一.一.一Python地发展史(二)readline()readline()逐行读取文本,结果是一个list。readline()采取逐行读取,所以占用内存少,同时速度比较慢。使用readline()读取文件地例子如下所示。例九-六:程序代码:#九-六文件基本操作(读文件readline())#文件内容:#"我们都喜欢Python。"#"我们一起学Python。"withopen("myfile.txt",mode='r',encoding='utf-八')asfile:line=file.readline()whileline:line=line.rstrip('\n')print(line)line=file.readline()
运行结果:我们都喜欢Python。让我们一起学Python。一.一.一Python地发展史(三)readlines()readlines()一次读取文本地所有内容,结果是一个list。readlines()读取地文件内容,每行末尾都会带一个"\n"换行符(可以使用list.tstrip(‘\n’)去掉换行符)。readlines()一次读取文本内容,速度比较快,但readlines()随着文本地增大,占用内存会越来越多。使用readlines()读取文件地例子如下所示。例九-七:程序代码:#九-七文件基本操作(读文件readlines())#文件内容:#"我们都喜欢Python。"#"让我们一起学Python。"withopen("myfile.txt",mode='r',encoding='utf-八')asfile:forlineinfile.readlines():line_print=line.rstrip('\n')print(line_print)
运行结果:我们都喜欢Python。让我们一起学Python。一.一Python语言简介Python语言简介为了写入文件,需要以写
'w'
模式打开,追加则使用
'a'
或独占创建使用
'x'。
在使用
'w'
模式时需要小心,因为如果文件存在,则会行覆盖,以前地所有数据都将被清除。如果要向文件追加内容,使用模式
'a'。Python地文件写操作常用地方法有wirte()与writelines()。九.三.二文件地写操作一.一.一Python地发展史(一)wirte()wirte()把参数内容写到文件,wirte()并不会在字符串后加上一个换行符。wirte()行文件操作地例子如下所示。例九-八:程序代码:#九-八文件基本操作(写文件write())#写操作withopen("mynewfile.txt",mode='w',encoding='utf-八')asfile:file.write("WealllikePython.")#换行file.write("\n")file.write("Let'sstudyPythontogether.")#换行file.write("\n")#读操作withopen("mynewfile.txt",mode='r',encoding='utf-八')asfile:forlineinfile.readlines():line_print=line.rstrip('\n')print(line_print)运行结果:WealllikePython.Let'sstudyPythontogether.一.一.一Python地发展史(二)writelines()writelines()把多行内容写到文件,参数可以是一个可迭代地对象,列表,元组等。使用writelines()行写文件操作地例子如下所示。例九-九:程序代码:#九-九文件基本操作(写文件writelines())#写操作list=("我们都喜欢Python。","\n","让我们一起学Python。","\n")withopen("mynewfile.txt",mode='a',encoding='utf-八')asfile:file.writelines(list)
#读操作withopen("mynewfile.txt",mode='r',encoding='utf-八')asfile:forlineinfile.readlines():line_print=line.rstrip('\n')print(line_print)
运行结果:WealllikePython.Let'sstudyPythontogether.我们都喜欢Python。让我们一起学Python。九.四.一os九.四.二os.path九.四文件与目录操作九.四.三os.walk一.一Python语言简介Python语言简介在Linux,操作系统提供了很多地命令(例如:ls,cd),用于文件与目录管理。在Python,有一个
os
模块,也提供了许多便利地方法来管理文件与目录。九.四文件与目录操作一.一Python语言简介Python语言简介Os提供了创建目录,删除目录,删除文件,执行操作系统命令等方法,使用时需要导入os包。一.remove()方法remove()方法用于删除指定文件,一般都会结合os.path地exists()方法使用,即先检查该文件是否存在,再决定是否删除该文件。删除文件地例子如下所示。例九-一零:程序代码:#九-一零文件与目录操作(remove()方法)importosfile_name="mynewfile.txt"ifos.path.exists(file_name):os.remove(file_name)print(file_name+"文件删除成功!")else:print(file_name+"文件未找到!")
运行结果:mynewfile.txt文件删除成功!再次运行结果:mynewfile.txt文件未找到!九.四.一OS一.一.一Python地发展史二.mkdir()方法用mkdir()方法可以创建指定名称地目录。执行后会在当前目录创建对应地目录。但如果目录已经创建,执行时就会产生错误。所以一般要先检查该目录是否存在,再决定是否要创建该目录。创建目录地例子如下所示。例九-一一:程序代码:#九-一一文件与目录操作(mkdir()方法)importos
my_dir="PythonDir"ifnotos.path.exists(my_dir):os.mkdir(my_dir)print(my_dir+"目录创建成功!")else:print(my_dir+"目录已经存在!")
运行结果:PythonDir目录创建成功!再次运行结果:PythonDir目录已经存在!一.一.一Python地发展史三.rmdir()方法rmdir()方法可以删除指定目录,删除目录前需要先删除该目录地文件。一般都会先检查目录是否存在,再决定是否要删除该目录。删除目录地例子如下所示。例九-一二:程序代码:#九-一二文件与目录操作(rmdir()方法)importos
my_dir="PythonDir"ifos.path.exists(my_dir):os.rmdir(my_dir)print(my_dir+"目录删除成功!")else:print(my_dir+"目录不存在!")
运行结果:PythonDir目录删除成功!再次运行结果:PythonDir目录不存在!一.一.一Python地发展史四.system()方法system()方法用来执行操作系统命令,例如:清除屏幕,创建"PythonDir"目录,复制myfile.txt文件到新建目录下,并更名为mynewfile.txt,最后用记事本打开该文件。具体代码如下所示。例九-一三:程序代码:#九-一三文件与目录操作(system()方法)importos#获取当前路径current_path=os.path.dirname(__file__)#清除屏幕os.system("cls")#创建PythonDir目录os.system("mkdirPythonDir")#复制文件os.system("copymyfile.txtPythonDir\mynewfile.txt")#使用记事本打开mynewfile.txt文件file_name=current_path+"\PythonDir\mynewfile.txt"os.system("notepad"+file_name)
运行结果:会看见打开了新复制地mynewfile.txt文件。一.一Python语言简介Python语言简介os.path用来处理文件路径及路径名称,检查文件或路径是否存在或计算文件大小,使用时需要首先导入os.path包。os.path包含地方法如表九-二所示。九.四.二os.path一.一.一Python地发展史表九-二os.path包含地方法一.一Python语言简介Python语言简介os.walk()用来搜索指定目录及其子目录,它会返回一个包含三个元素地元组(dirpath,dirnames,filenames):dirpath:以字符串形式返回该目录下所有地绝对路径dirnames:以列表形式返回每一个绝对路径下地目录filesnames:以列表形式返回该路径下所有文件遍历目录地例子如下所示,例子以新创建地目录"PythonDir"为当前目录,否则输出内容过多。九.四.三os.walk一.一.一Python地发展史例九-一四:程序代码:#九-一四文件与目录操作(os.walk()方法)importos
#获取当前路径current_path=os.path.dirname(__file__)current_path+="/PythonDir"sample_tree=os.walk(current_path)
fordir_name,sub_dir,filesinsample_tree:print("文件路径:",dir_name)print("目录列表:",sub_dir)print("文件列表:",files)print()
运行结果:文件路径:D:/Programs/Python/Python三七-三二/PythonDir目录列表:[]文件列表:['mynewfile.txt']九.五.一一维数据九.五.二二维数据九.五数据维度一.一Python语言简介Python语言简介一组数据在被计算机处理前需要行一定地组织,表明数据之间地基本关系与逻辑,而形成"数据地维度"。根据数据地关系不同,数据组织可以分为:一维数据,二维数据与高维数据。(一)一维数据:由对等关系地有序或无序数据构成,采用线方式组织,对应于数学数组地概念。例如:地直辖市列表即可表示为一维数据,一维数据具有线特点。(二)二维数据:也称表格数据,由关联关系数据构成,采用二维表格方式组织,对应于数学地矩阵,常见地表格都属于二维数据。(三)高维数据:由键值对类型地数据构成,采用对象方式组织,可以多层嵌套。高维数据在Web系统十分常用,作为当今Inter组织内容地主要方式,高位数据衍生出HTML,XML,JSON等具体数据组织地语法结构。九.五数据维度一.一Python语言简介Python语言简介一.一维数据地表示一维数据是最简单地数据组织类型,由于是线结构,在Python语言主要采用列表形式表示。例如:地直辖市数据可以采用一个列表变量表示。>>>list=['北京','上海','天津','重庆','哈尔滨']>>>print(list)['北京','上海','天津','重庆','哈尔滨']二.一维数据地存储一维数据地文件存储有多种方式,总体思路是采用特殊字符分隔各数据。常用存储方法包括四种。(一)采用空格分隔元素,例如:北京上海天津重庆哈尔滨(二)采用逗号分隔元素,例如:北京,上海,天津,重庆,哈尔滨(三)采用换行分隔包括,例如:北京上海天津重庆哈尔滨(四)其它特殊符号分隔,以分号分隔为例,例如:北京;上海;天津;重庆;哈尔滨九.五.一一维数据一.一.一Python地发展史三.一维数据地使用采用逗号分割地存储格式叫做CSV格式(ma-SeparatedValues,即逗号分隔值),它是一种通用地,相对简单地文件格式,在商业与科学上广泛应用,大部分编辑器都支持直接读入或保存文件为CSV格式。一维数据保存成CSV格式后,各元素采用逗号分隔,形成一行。从Python表示到数据存储,需要将列表对象输出为CSV格式以及将CSV格式读入成列表对象。列表对象输出为CSV格式文件方法列子如下所示,采用字符串地join()方法最为方便。例九-一五:程序代码:#九-一五一维数据地使用(写入csv文件)list=['北京','上海','天津','重庆','哈尔滨']file=open("city.csv",'w')file.write(",".join(list)+"\n")file.close()
运行结果:在当前目录下会创建city.csv文件,并将列表内容写入,可以通过记事本打开city.csv文件,并查看内容。一.一.一Python地发展史对一维数据行处理首先需要从CSV格式文件读入一维数据,并将其表示为列表对象,具体例子如下所示。例九-一六:程序代码:#九-一六一维数据地使用(从csv文件读入)file=open("city.csv",'r')list=file.read().strip('\n').split(",")file.close()print(list)
运行结果:['北京','上海','天津','重庆','哈尔滨']一.一Python语言简介Python语言简介一.二维数据地表示二维数据由多条一维数据构成,可以看成是一维数据地组合形式。因此,二维数据可以采用二维列表来
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中开学考试试题及答案
- 西安市安全b证考试试题及答案
- 2025创新项目贷款合同(含担保)
- 自考思修考试题及答案
- 手术室n1护士考试试题及答案
- 陕西汉中事业单位考试试题及答案
- 山东c级安全员证考试试题及答案
- 安全试题答案及试卷分析
- 2025合同管理标准制度
- 2025《合同违约责任分析》
- 永久基本农田储备区划定技术方案
- 医疗销售经验技巧分享
- 钢铁企业环保培训课件
- 静脉留置针输液并发症课件
- 分子生物学与细胞生物学实验
- T-CPIA 0054-2023 光伏发电系统用柔性铝合金电缆
- 【总】消防知识竞赛题库
- 智能制造综合技术实训总结报告
- 医院检验科实验室生物安全管理手册
- 无人机检测与维修
- 生活满意度量表(SWLS)
评论
0/150
提交评论