Python金融大数据分析课件 第6章 文件操作_第1页
Python金融大数据分析课件 第6章 文件操作_第2页
Python金融大数据分析课件 第6章 文件操作_第3页
Python金融大数据分析课件 第6章 文件操作_第4页
Python金融大数据分析课件 第6章 文件操作_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

第6章

文件操作汇报人:时间:2025/01/01

学习目标掌握文件操作的应用掌握目录操作的应用掌握读写docx及xlsx文件掌握jieba库、wordcloud库的应用目录01文件基本操作02读/写docx文件03读/写xlsx文件04目录操作05jieba库06wordcloud库的安装与使用07金融数据实战文件基本操作01文件是数据存储的一种形式,文件有2种类型:文本文件:由单一特定编码组成的文件,如UTF-8编码;由于存在编码,也被看成是存储着的长字符串,适用于例如:.txt文件、.py文件等。二进制文件:直接由比特0和1组成,没有统一字符编码,一般存在二进制0和1的组织结构,即文件格式-

适用于例如:.png文件、.avi文件等。如:一组词语:"中国";

文本形式:中国;二进制形式:b'\xd6\xd0\xb9\xfa'文件形式6.1文件基本操作文本文件和二进制文件的操作流程都是一样的,通常要经过三个步骤:打开或创建文件、对文件进行读写操作、关闭文件。6.1.1打开/创建文件Python提供了内置函数open()用于打开文件,其语法格式如下:open(file_name[,access_mode])参数说明:file_name:要打开或创建的文件名,需要用单引号或双引号括起来。如果要打开的文件不在当前目录下,要指定完整路径。access_mode:指打开文件的模式,对应只读,写入,追加等。access_mode变量值不是必须的,默认访问模式为只读(r),各个参数取值见表6-1。6.1.1打开/创建文件表6-1access_mode参数取值说明取值说明'r'以只读方式打开文件,文件的指针将会放在文件的开头。'w'以只写模式打开文件。如果该文件已存在则打开文件,并清除原有文件内容。如果该文件不存在,创建新文件。'x'写模式,新建一个文件,如果该文件已存在则会报错。'a'追加写模式。如果该文件已存在则在末尾追加。如果该文件不存在,创建新文件写入。‘b’二进制模式,可与其他模式组合使用。'rb','wb','xb',ab'以二进制模式,只读、只写、创建新文件、打开文件追加。'rt','wt','xt','at'文本模式(默认)。'+'打开一个文件进行更新(可读可写)。6.1.1打开/创建文件示例:>>>file0=open(‘f.txt’,’rt’)#以文本形式打开文件>>>file1=open(‘picture.png’,’rb’)

#picture是一个图片文件,使用二进制方式打开该文件>>>file2=open('text.txt','r',encoding='utf-8')

#打开使用utf-8编码方式的文件6.1.1打开/创建文件在Python中,with

语句是处理文件操作的推荐方式,它能自动管理文件资源(无需手动调用

close()),即使发生异常也能保证文件正确关闭,避免资源泄露。语法格式如下:withopen(文件路径,打开模式,encoding=编码格式)as文件对象:

#对文件对象的操作(读取/写入等)#缩进结束后,文件自动关闭示例:#读取文本文件(utf-8编码)withopen("test.txt","r",encoding="utf-8")asf:content=f.read()#读取全部内容为字符串print(content)6.1.2读写取文件1将数据写入文件函数的使用顺序优先复用内置与标准库函数,再考虑第三方函数,最后才是自定义函数。这种顺序可减少重复开发,提高开发效率,同时保证代码的稳定性和兼容性。文件写入有两个常用方法分别是write()和writelines()。操作方法描述<f>.write(s)向文件写入一个字符串或字节流

>>>f.write("今天天气很好!")

<f>.writelines(lines)将一个元素全为字符串的列表写入文件

>>>ls=["中国","法国","美国"]

>>>f.writelines(ls)

中国法国美国6.1.2读写取文件2从文件读取数据函数的使用顺序优先复用内置与标准库函数,再考虑第三方函数,最后才是自定义函数。这种顺序可减少重复开发,提高开发效率,同时保证代码的稳定性和兼容性。常用的文件读取方法有read(size)、readline()和readlines()。操作方法描述<f>.read(size=-1)

读入全部内容,如果给出参数,读入前size长度

>>>s=f.read(2)<f>.readline(size=-1)读入一行内容,如果给出参数,读入该行前size长度

>>>s=f.readline()

今天天气很好!<f>.readlines(hint=-1)读入文件所有行,以每行为元素形成列表;如果给出参数,读入前hint行

>>>s=f.readlines()

['今天天气很好!']6.1.3关闭文件函数的使用顺序优先复用内置与标准库函数,再考虑第三方函数,最后才是自定义函数。这种顺序可减少重复开发,提高开发效率,同时保证代码的稳定性和兼容性。通常使用使用close()方法关闭文件。其语法格式如下:file.close()其中,file为打开的文件对象。close()方法是先刷新缓冲区中还没写入的信息,然后关闭文件,这样可以将没有写入文件的内容写入文件,在关闭文件之后便不能进行写入操作了。读/写docx文件026.2读/写docx文件文档字符串示例例如,在比较两数大小的函数中,文档字符串可说明输入参数类型、返回值含义,帮助使用者快速了解函数的使用方法。在Python中,处理docx文件最常用的库是python-docx,它可以方便地实现docx文件的读取和写入操作。1安装依赖库首先需要安装python-docx库,打开终端执行以下命令:>>>pipinstallpython-docxpython-docx库读写docx文档主要涉及三个结构对象,Document文档对象、Paragraph段落对象和Run文字块对象。Document:是一个word文件对象,Document是独立的,打开不同的word文件,就会有不同的Document对象,相互之间没有影响。Paragraph:是一个段落对象,一个word文档由多个段落组成,当在一个文档中输入一个回车键,就会成为新的段落,输入shift+回车,不会分段。Run:表示一个节段,每个段落由多个节段组成,一个段落中具有相同样式的连续文本,组成一个节段,所以一个段落对象有个Run列表。2读docx文件示例:importdocx#导入库 doc=docx.Document(r'test.docx') print(len(docx.paragraphs))#输出总的段落数 print(docx.paragraphs[0].text)#读取word文档中的第一段内容

6.2读/写docx文件foriinrange(2,5):#指定读取word某几段内容 print(docx.paragraphs[i].text) forparagraphindocx.paragraphs:#读取word中所有的内容 print(paragraph.text) #读取word表格中的内容 fortindocx.tables:#for循环获取表格对象 forrowint.rows:#获取每一行 row_str=[] forcellinrow.cells: row_str.append(cell.text) print(row_str)6.2读/写docx文件

3写数据到docx文件6.2读/写docx文件要先创建文档,调用Document文档对象的方法实现写入,最后保存。Document文档对象方法含义见表6-2。表6-2

Document文档对象方法方法说明add_heading()添加标题add_paragraph()添加段落add_run()添加文字块add_page_break()添加空白页add_table()添加表格add_picture()添加图片doc.save()保存读写xlsx文件036.3读/写xlsx文件文档字符串示例例如,在比较两数大小的函数中,文档字符串可说明输入参数类型、返回值含义,帮助使用者快速了解函数的使用方法。

处理xlsx文件,主要用到库:openpyxl,专门用于读写Excel2010及以上版本的.xlsx文件,功能强大,支持单元格样式、公式、图表等复杂操作,适合需要精细控制Excel内容的场景。1安装依赖库首先需要安装openpyxl库,打开终端执行以下命令:>>>pipinstallopenpyxl

2读xlsx文件示例:fromopenpyxlimportload_workbook#打开Excel文件wb=load_workbook("test.xlsx")#获取所有工作表名称sheet_names=wb.sheetnamesprint("工作表名称:",sheet_names)#选择第一个工作表(或按名称选择:wb["Sheet1"])ws=wb.active#读取单元格数据print("\nA1单元格值:",ws["A1"].value)print("B2单元格值:",ws.cell(row=2,column=2).value)#遍历行数据print("\n所有数据:")forrowinws.iter_rows(min_row=1,max_row=ws.max_row,values_only=True):print(row)#关闭文件wb.close()6.3读/写xlsx文件3写入xlsx文件示例:fromopenpyxlimportWorkbookfromopenpyxl.stylesimportFont,PatternFill#创建新的Excel文件wb=Workbook()#获取默认工作表ws=wb.activews.title="数据表格"#修改工作表名称#写入单元格数据ws["A1"]="姓名"ws["B1"]="年龄"ws["C1"]="城市"6.3读/写xlsx文件#批量写入数据data=[["张三",25,"北京"],["李四",30,"上海"],["王五",22,"广州"]]forrowindata:ws.append(row)#设置单元格样式(表头加粗、背景色)header_font=Font(bold=True,color="FFFFFF")header_fill=PatternFill(start_color="4472C4",end_color="4472C4",fill_type="solid")forcellinws[1]:#第一行(表头)cell.font=header_fontcell.fill=header_fillwb.save("output.xlsx")#保存文件print("文件写入成功!")6.3读/写xlsx文件目录操作046.4

目录操作文档字符串示例例如,在比较两数大小的函数中,文档字符串可说明输入参数类型、返回值含义,帮助使用者快速了解函数的使用方法。目录的操作需要使用内置的os和os.path模块实现。常见的目录操作主要有判断目录是否存在、创建目录、删除目录和遍历目录等。6.4.1os和os.path模块在使用Python中内置的os和其子模块os.path对目录或文件进行操作时,需要先使用import语句将其导入(在导入os模块后os.path也可以被使用),具体代码如下:importosos模块所提供的用于操作目录的函数见表6-8。6.4.1os和os.path模块文档字符串示例例如,在比较两数大小的函数中,文档字符串可说明输入参数类型、返回值含义,帮助使用者快速了解函数的使用方法。表6-8

os模块用于操作目录的函数函数说明getcwd()返回当前的工作目录listdir(path)返回指定路径下的文件和目录信息mkdir(path[,mode])创建目录makedirs(path1/path2/…[,mode])创建多级目录rmdir(path)删除目录removedirs(path1/path2/…)删除多级目录chdir(path)把path设置为当前目录walk(top[,topdown[,onerror]])遍历目录树,该方法返回一个元组,包括所有路径名、所有目录列表和文件列表3个元素6.4.1os和os.path模块文档字符串示例例如,在比较两数大小的函数中,文档字符串可说明输入参数类型、返回值含义,帮助使用者快速了解函数的使用方法。os.path模块所提供的用于操作目录的函数见表6-9。表6-9

os.path模块用于操作目录的函数函数说明abspath(path)获取文件或目录的绝对路径exists(path)判断文件或目录是否存在,存在则返回Ture否则返回Falsejoin(path,name)将目录与目录或目录与文件名称拼接起来splitext()分离文件名与扩展名basename(path)从目录中提取文件名dirname(path)从路径中提取文件路径但不包括文件名isdir(path)判断是否为路径6.4.2

路径文档字符串示例例如,在比较两数大小的函数中,文档字符串可说明输入参数类型、返回值含义,帮助使用者快速了解函数的使用方法。找到文件或目录往往需要一个准确的路径,通常会涉及到相对路径和绝对路径这两种路径。1.相对路径相对路径是依赖于当前工作目录的,当前工作目录指的是当前文件所在的目录,在Python中,可以通过os模块所提供的getcwd()函数获取当前工作目录,示例: importos print(os.getcwd())输出: E:\progrsm\Python\Code#显示当前工作目录如果在当前工作目录下有一个子目录demo,并在该子目录下有一个文件student.txt,则打开此文件操作:withopen(“demo/student.txt”)asfile: pass6.4.2

路径文档字符串示例例如,在比较两数大小的函数中,文档字符串可说明输入参数类型、返回值含义,帮助使用者快速了解函数的使用方法。2.绝对路径绝对路径指文件的实际路径,并不依赖于当前工作目录。在Python中,可以通过os.path模块所提供的abspath()函数获取一个文件的绝对路径,示例:importos print(os.path.abspath(r”demo\student.txt”))输出: E:\progrsm\Python\Code\demo\student.txt#显示当前文件绝对路径6.4.3

判断目录是否存在文档字符串示例例如,在比较两数大小的函数中,文档字符串可说明输入参数类型、返回值含义,帮助使用者快速了解函数的使用方法。如果需要判断给定的目录或文件是否存在,可以通过os.path模块提供的exists()函数实现,exists()函数的基本语法为:os.path.exists(path)其中,path是要需要被判断的目录,可以是绝对路径,也可以是相对路径(判断文件是否存在时path填写的是文件的路径)。执行语句后返回值为True表示给定的路径存在,返回值为False则表示给定的路径不存在。6.4.4

创建/删除/遍历目录文档字符串示例例如,在比较两数大小的函数中,文档字符串可说明输入参数类型、返回值含义,帮助使用者快速了解函数的使用方法。1.创建目录(1)创建一级目录创建一级目录指一次只能创建一级目录,通过使用os模块提供的mkdir()函数实现。通过该函数只能供创建指定路径中的最后一级目录,其基本语法如下:os.mkdir(path,mode=0777)参数说明:

path:用于指定要创建的目录,可以使用绝对路径,也可以使用相对路径。

mode:用于指定数值模式,默认值为0777,该参数在UNIX操作系统上无效或是被忽略。6.4.4

创建/删除/遍历目录文档字符串示例例如,在比较两数大小的函数中,文档字符串可说明输入参数类型、返回值含义,帮助使用者快速了解函数的使用方法。(2)创建多级目录通过使用os模块提供的makedirs()函数可创建多级目录,该函数采用的是递归的方式创建目录,其基本语法如下:os.makedirs(name,mode=0o777,exist_ok=False)参数说明:name(必选):指定要创建的目录,可以是绝对路径,也可以是相对路径。mode(可选):指定数值模式,默认值为0777,该参数在UNIX操作系统上无效或是被忽略。exist_ok(可选):若设为True,当路径已存在时不报错;设为False(默认)时若路径已存在则抛出FileExistsError。6.4.4

创建/删除/遍历目录文档字符串示例例如,在比较两数大小的函数中,文档字符串可说明输入参数类型、返回值含义,帮助使用者快速了解函数的使用方法。2.删除目录

通过使用os模块提供的rmdir()函数可以实现删除目录,需要注意的是,当目录为空时才可以使用rmdir()函数删除,rmdir()函数的基本语法如下:os.rmdir(path)3.遍历目录通过使用os模块中的中的walk()函数可以实现遍历目录的功能,只在Windows操作系统和UNNIX操作系统中有效。walk()函数的基本语法如下:os.walk(top[,topdown][,onerror][,followlinks])各个参数含义见表6-10。表6-10

walk()函数基本语法的解释元素说明top指定要遍历内容的根目录topdowm可选参数,用于指定遍历的顺序,默认值为True。True表示从根目录开始遍历,False表示从最后一级子目录开始遍历onerror可选参数,用于指定错误的处理方式,默认忽略。通常情况下采用默认,如果不想忽略可以指定错误处理函数followlinks可选参数,默认情况下walk()函数不会向下转换成解析到目录的符号链接,该参数值为True表示用于指定在支持的系统上访问由符号链接指向的目录6.4.4

创建/删除/遍历目录jieba库056.5jieba库文档字符串示例例如,在比较两数大小的函数中,文档字符串可说明输入参数类型、返回值含义,帮助使用者快速了解函数的使用方法。

jieba是一个优秀的第三方库,用于中文分词,提供了三种分词模式,需要额外安装。1安装依赖库

首先需要安装jieba库,打开终端执行以下命令:>>>pipinstalljieba2jieba库的使用表6-11

jieba库的三种模式模式说明jieba.cut(s)精确模式,把文本精确地切分开,不存在冗余单词jieba.lcut(s,cut_all=True)全模式,把文本中所有可能的词语都扫描出来,存在冗余jieba.lcut_for_search(s)搜素引擎模式,在精确模式的基础上,对长词再次切分6.5jieba库文档字符串示例例如,在比较两数大小的函数中,文档字符串可说明输入参数类型、返回值含义,帮助使用者快速了解函数的使用方法。示例:importjiebaprint(jieba.lcut("中华人民共和国是一个伟大的国家"))#精确模式print(jieba.lcut("中华人民共和国是一个伟大的国家",cut_all=True))#全模式print(jieba.lcut_for_search("中华人民共和国是一个伟大的国家"))#搜索引擎模式输出:['中华人民共和国','是','一个','伟大','的','国家']['中华','中华人民','中华人民共和国','华人','人民','人民共和国','共和','共和国','国是','一个','伟大','的','国家']['中华','华人','人民','共和','共和国','中华人民共和国','是','一个','伟大','的','国家']6.5jieba库文档字符串示例例如,在比较两数大小的函数中,文档字符串可说明输入参数类型、返回值含义,帮助使用者快速了解函数的使用方法。3自定义词典可以使用jieba.load_userdict(path)加载自定义词典,path是自定义文件的路径。自定义词典在运行过程中能够起到一定的作用,可以通过自定义词典来增强歧义纠错的能力。参照如下模板,可以进行文本文件的分词以及词频统计:txt=open(“此处填写包含文件名的文件路径”).read#读取文件内容forchin'!"#$%()*+<_>/:;<>=?@[\]\^_{}|~':txt=txt.replace(ch,'')#将文本中含有的所有上述字符都变为空格returntxtwords=jieba.lcut(txt)counts={}#定义一个空字典类型,使单词和该单词出现的次数作为一个键值对forwordinwords:#遍历words列表的每一个值 iflen(word)==1 continue else:counts[word]=counts.get(word,0)+1items=list(counts.items())#将该字典转化成一个列表,其中的键值对是以元组的形式存在items.sort(key=lambdax:x[1],reverse=True)foriinrange(10):word,count=items[i]print("{:<10}{:>5}".format(word,count))#统计文件中出现次数排名前10的单词6.5jieba库wordcloud库的安装与使用06wordcloud是一个用于生成词云的第三方库,以词语为基本单位,将出现的词语展示在一个图片中,根据不同词

温馨提示

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

评论

0/150

提交评论