




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第七章
文件操作Chapter7FileOperationCONTENT目录01读写文本文件02读写CSV文件03读写JSON文件04操作文件和文件夹01读写文本文件对于文本文件(TXT)而言,Python的基本操作步骤是:先打开一个文件,生成一个文件对象;再利用各种方法操作这个文件对象;最后关闭文件,释放资源。1、open()函数可以通过Python内置函数open()打开文件,并生成一个文件对象。open()函数的基本格式为:open(<文件名>,<打开模式>,encoding='utf-8')其中:<文件名>指定要打开文件的名称或含有完整路径的文件名。<打开模式>用来控制打开文件的方式,默认值是'r'和't',分别代表只读和文本文件模式。除此之外,还有'w'(覆盖写模式)、'a'(追加写模式)、'x'(创建写模式)、'b'(二进制文件模式)。'b'和't'可以和其他几种读写模式组合使用,例如'rt'代表文本只读、'wb'代表二进制覆盖写等等。encoding指的是文件编码的类型。例如:txtf1=open('d:/height.txt','w')指以覆盖写模式打开height.txt文件,并生成一个名为txtf1的文件对象。7.1读写文本文件2、close()方法当文件操作完毕后,一定要用close()方法将其关闭,释放其占用的系统资源。其基本格式为:<文件对象名>.close()例如txtf1.close()的功能就是将txtf1这个文件对象关闭。7.1读写文本文件3、文件对象的常用操作方法(1)read()方法read()方法可以读取文件中一定量的数据,并以字符串的形式返回。基本格式为:<文件对象名>.read(<读取长度>)其中:<读取长度>代表要读取的内容长度,如果不写则代表整个文件。7.1读写文本文件7.1读写文本文件【例7-1】读取song.txtIn[1]:f1=open('song.txt','r',encoding='utf-8')
txt=f1.read(25)
print(txt)
f1.close()Out[1]:我爱你,中国我爱你,中国我爱你春天蓬勃的秧苗(2)readline()方法readline()方法的功能是从文件中读取一行内容,并以字符串形式返回。基本格式为:<文件对象名>.readline(<读取长度>)其中:<读取长度>代表读取该行中的长度,如果不写则代表整行。readline()方法和循环语句相结合,可以实现文件内容的遍历。7.1读写文本文件【例7-2】读取song.txt中的行In[1]:f1=open('song.txt','r',encoding='utf-8')
txt=f1.readline()
print(txt)
f1.close()Out[1]:我爱你,中国7.1读写文本文件【例7-3】遍历song.txt,输出每行长度In[1]:f1=open('song.txt','r',encoding='utf-8')
forlineinf1:
print(len(line))
f1.close()Out[1]:7711以下结果略(3)readlines()方法readlines()方法的功能是从文件中读取行,并以列表形式返回,列表的每个元素就是文件的一行。基本格式为:<文件对象名>.readlines(<读取行数>)其中:<读取行数>代表读取多少行,如果不写则代表所有行。7.1读写文本文件7.1读写文本文件【例7-4】读取song.txt,以列表返回每行In[1]:f1=open('song.txt','r',encoding='utf-8')
listf1=f1.readlines()
print(listf1)
f1.close()Out[1]:['我爱你,中国\n','我爱你,中国\n','我爱你春天蓬勃的秧苗\n','我爱你秋日金黄的硕果\n','我爱你青松气质\n','我爱你红梅品格\n','我爱你家乡的甜蔗\n','好像乳汁滋润着我的心窝\n','我爱你,中国\n','我爱你,中国\n','我要把最美的歌儿献给你\n','我的母亲,我的祖国!\n','我爱你,中国\n','我爱你,中国\n','我爱你碧波滚滚的南海\n','我爱你白雪飘飘的北国\n','我爱你森林无边\n','我爱你群山巍峨\n','我爱你淙淙的小河\n','荡着清波从我的梦中流过\n','我爱你,中国\n','我爱你,中国\n','我要把美好的青春献给你\n','我的母亲,我的祖国!'](4)write()方法write()方法可以将指定字符串写入文件。7.1读写文本文件【例7-5】创建文件,写入指定字符串In[1]:str1='Thisistheappendingtext.'
f1=open('sample.txt','x')
f1.write(str1)
f1.close()(5)writelines()方法writelines()方法可以将一个完全由字符串组成的列表写入到文件中。7.1读写文本文件【例7-6】In[1]:f1=open('sample2.txt','w')
list1=['众鸟高飞尽,',\
'孤云独去闲。',\
'相看两不厌,',\
'只有敬亭山。']
f1.writelines(list1)
f1.close()(6)seek()方法seek()方法可以用来定位当前文件操作的指针位置,基本格式为:<文件对象名>.seek(<offset>,<whence>)其中:<offset>表示从whence位置增加的量。<whence>表示参考位置,默认值为0,即文件起始位置,1代表当前位置,2代表文件结尾。7.1读写文本文件【例7-7】改变文件当前操作位置In[1]:f1=open('sample.txt','r')
f1.seek(8)#定位到起始位置后的第8个字符
str2=f1.read(3)#从定位到的位置开始读取3个字符
print(str2)
f1.close()Out[1]:the4、with语句在前面的例子中,每次文件操作完成后,都需要使用close()方法关闭文件以释放资源。其实,在文件操作中还可以使用Python提供的with关键字,它的好处是无需再使用close()方法关闭文件,即使在文件处理中发生异常也可以。7.1读写文本文件【例7-8】In[1]:withopen('sample2.txt','r')asf2:
str2=f2.read()
print(str2)Out[1]:众鸟高飞尽,孤云独去闲。相看两不厌,只有敬亭山。02读写CSV文件CSV文件是表格处理软件和数据库常见的导入导出格式,在数据分析处理中有着广泛的应用。CSV文件属于文本文件,其数据都是以文本形式存储的。CSV是Comma-SeparatedValues的缩写,也就是说,此类文件一般使用英文半角逗号作为分隔符。文件中的每一行是一条记录,行与行之间用换行符分隔。在Python中,可以使用csv标准模块来读取和操作CSV文件。1、打开和读取CSV文件可以使用open()函数打开CSV文件,只是注意需要将newline参数设置为空白字符串。在打开文件后,可以使用csv模块的reader()函数读取文件内容,其返回值是一个_csv.reader对象。采用for循环遍历该对象,即可读取文件中的每一条记录,每条记录都是一个列表。7.2读写CSV文件【例7-9】In[1]:importcsv
withopen('HW.csv','r',newline='')ascsvfile_1:
rd=csv.reader(csvfile_1)
forrecordinrd:
print(record)Out[1]:['id','height','weight']['1001','172','65']['1002','156','50']['1003','183','80']2、写入CSV文件可以使用csv模块的writer()函数返回一个_csv.writer类型的对象,再利用其writerow()方法将一条记录写入文件。参数newline用于控制文件写入模式下的换行符处理,换行符可以是不同的字符,例如\n(LF,Unix风格)或\r\n(CRLF,Windows风格)。可以如下取值:None:使用系统默认的换行符模式。'':禁用换行符转换,保持原始换行符不变。'\n':强制使用LF(\n)作为换行符,无论当前操作系统是什么。7.2读写CSV文件【例7-10】In[1]:importcsv
str1=['1004',165,55]
str2=['1005',157,75]
withopen('HW.csv','a',newline='')ascsvfile1:
wt=csv.writer(csvfile1)
wt.writerow(str1)
wt.writerow(str2)如果想一次性写入多条记录,需要使用writerows()方法。7.2读写CSV文件【例7-11】In[1]:importcsv
str1=[['1006',135,30],['1007',163,45]]
withopen('HW.csv','a',newline='')ascsvfile1:
wt=csv.writer(csvfile1)
wt.writerows(str1)03读写JSON文件JSON(JavaScriptObjectNotation)是用JavaScript语法来描述数据结构的一种轻量级的数据交换格式,易于人类阅读和编写,也易于机器解析和生成,且适用于不同的编程语言。JSON格式主要包括数组和对象两种。数组格式使用一对中括号([])包装,元素之间用逗号间隔,例如:[35,45,21,44],数组格式在Python中被解析为列表;对象格式使用一对花括号({})包装,每个对象成员由键值对表示,用冒号(:)分隔,而对象成员之间则用逗号(,)分隔,例如:{ “id”:[“1001”,“1002”,“1003”,“1004”,“1005”], “Chinese”:[90,83,87,95,69], “Math”:[99,70,89,97,85]}对象格式在Python中被解析为字典。1、序列化序列化(serialization)是指将数据和对象转换成可存储或网络传输格式的过程,一般为JSON或XML格式。在Python中,可以使用json标准模块中的dumps()方法对数据进行序列化,转换成JSON格式。其基本格式为:json.dumps(<对象>,sort_keys=False,indent=None)其中:<对象>可以是Python的列表或字典类型sort_keys参数可以对字典数据按照keys排序,默认是不排序indent参数可以给序列化后的数据增加缩进7.3读写JSON文件7.3读写JSON文件【例7-12】序列化In[1]:importjson
list1=[1,3,'abc']dict1={'score':[95,84,87],'id':['1001','1003','1002']}
json1=json.dumps(list1)
print(json1)Out[1]:[1,3,"abc"]In[2]:json2=json.dumps(dict1)
print(json2)Out[2]:{"score":[95,84,87],"id":["1001","1003","1002"]}7.3读写JSON文件【例7-12续】序列化In[3]:json3=json.dumps(dict1,sort_keys=True,indent=2)
print(json3)Out[3]:{"id":["1001","1003","1002"],"score":[95,84,87]}dumps()方法还有一个变体,即dump()方法。它也可以进行数据序列化,只不过会将结果输出到一个文件里。程序运行后,会将dict1字典数据序列化,并写入默认路径下的serial.json文件中。7.3读写JSON文件【例7-13】In[1]:importjson
dict1={'id':['1001','1002','1003'],'score':[95,87,84]}
withopen('serial.json','x')ass:#x为写模式
json.dump(dict1,s,indent=3)#文件内容见左图2、反序列化反序列化(deserialization)是指将JSON或XML格式数据转换成Python数据类型的过程。可以使用json标准模块中的loads()方法进行反序列化,将JSON数据读取出来。其基本格式为:json对象.loads(<JSON格式的数据>)7.3读写JSON文件【例7-14】In[1]:importjson
dict_loads=json.loads(json2)
dict_loadsOut[1]:{'id':['1001','1002','1003'],'score':[95,87,84]}loads(方法也有一个变体,即load()方法,它可以从JSON文件里读取数据进行反序列化操作。7.3读写JSON文件【例7-15】In[1]:importjson
withopen('serial.json','r')ass:
deserial=json.load(s)
print(deserial)Out[1]:{'id':['1001','1002','1003'],'score':[95,87,84]}04操作文件和文件夹Python的os标准库是与操作系统交互的一个接口,其中包括资源管理、路径管理、命令行操作、流程管理、硬件环境参数获取等功能在内的可调用函数。可以通过importos的方式导入os库。请不要使用“fromosimport*”这种方式导入os库,因为os库中包含一些与Python内置函数同名的函数,比如open()函数,这种导入方式会造成混乱。1、getcwd()函数和chdir()函数getcwd()函数和chdir()函数的功能分别是返回、修改当前工作目录。如果修改的目录不存在,会返回FileNotFoundError错误。7.4操作文件和文件夹【例7-16】In[1]:importos
os.getcwd()Out[1]:'C:\\Python3'In[2]:os.chdir('d:\python39')
os.getcwd()Out[2]:'d:\\python39'2、mkdir()函数和makedirs()函数mkdir()函数的功能是创建单级目录,可以采用相对路径或绝对路径,一般采用相对路径。如果当前目录已存在,会返回FileExistsError错误;如果给出的路径不存在,则返回FileNotFoundError错误。mkdir()函数只能创建一层目录,如果要创建多层目录,需要使用makedirs()函数。如果当前目录已存在,也会返回FileExistsError错误。如果将其exist_ok参数设置为True,则会忽略这个错误。7.4操作文件和文件夹【例7-17】In[1]:importos
os.mkdir('test')In[2]:os.makedirs('level1\level2\leaf')3、listdir()listdir()函数的功能是以列表形式返回某个路径下所有文件夹和文件的名称,这对于批量读取多个数据文件的任务非常有用。如例7-18中,其返回结果表示D:\python39这个路径下有level1和test两个文件夹和一个名为sample.txt文件。7.4操作文件和文件夹【例7-18】In[1]:importos
os.listdir('D:\python39')Out[1]:['level1','sample.txt','test']4、rename()rename(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 夜总会保安工作的特殊要求计划
- 2025年保密知识产权保护和竞业禁止协议经典
- 幼儿园职业意识培养方案计划
- 五年级上册数学教案-第二单元 三角形面积的计算练习课∣苏教版
- 2025年健身房委托管理协议
- 2025年影视剧摄制化妆服装聘用合同-
- 玻璃行业安全使用方法
- 服务项目合同书(2025年版)
- Unit4 Section A (2a-2d) 教学设计2024-2025学年人教版英语八年级上册
- 圆的面积(一)(教案)2024-2025学年数学六年级上册-北师大版
- 春季中医药养生保健知识讲座课件
- 2024年中考地理真题完全解读(湖南省卷)
- 浇灌拱形混凝土施工方案
- 校长在2025年春季学期第一次班主任工作会议讲话:“偷偷告诉你顶尖班主任都在用这个班级管理秘籍!”
- 2025年度美容院顾客权益及服务项目转让协议书
- 2025年新人教版八年级下册物理全册教案
- 化学-浙江省首考2025年1月普通高等学校招生全国统一考试试题和答案
- 【地理】俄罗斯课件-2024-2025学年人教版(2024)地理七年级下册
- 2019地质灾害深部位移监测技术规程
- 智慧能源信息化平台建设整体解决方案
- 药品使用风险监测与预警制度
评论
0/150
提交评论