《数据采集技术》课件-项目4:数据存储_第1页
《数据采集技术》课件-项目4:数据存储_第2页
《数据采集技术》课件-项目4:数据存储_第3页
《数据采集技术》课件-项目4:数据存储_第4页
《数据采集技术》课件-项目4:数据存储_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

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

文档简介

任务4.1文件的基本操作——数据采集技术中国人民大学出版社CHINARENMINUNIVERSITYPRESS

任务描述01020304知识点文件的打开与关闭文件读取操作文件写入操作

任务描述01

任务描述建军想用Python操作文件,本任务将通过Python实现文件的打开、关闭、读取、写入,具体思路为:(1)学习Python打开和关闭文件的函数。(2)使用Python相应的函数实现文件的打开与关闭。(3)学习Python读文件的三个函数,并通过练习理解它们的区别和使用方法。(4)学习Python写文件的两个函数,并通过练习学会使用它们。

文件的打开与关闭02

open()函数详解函数语法格式常用文件模式'r':只读模式(默认),文件不存在则报错'w':写入模式,文件不存在则创建,存在则覆盖'a':追加模式,文件不存在则创建,存在则追加'b':二进制模式,用于非文本文件操作'+':读写模式,与其他模式组合使用基本语法:open(file,mode='r',encoding=None,...)file参数:文件路径(字符串类型)mode参数:文件打开模式(默认为'r')encoding参数:文件编码方式(可选)

手动打开与关闭文件0102基本操作流程打开文件:f=open("file1.txt","r",encoding="utf-8")操作文件:content=f.read()关闭文件:f.close()注意事项:必须显式关闭文件,否则可能导致资源泄露示例代码解析pythonf=open("file1.txt","r",encoding="utf-8")content=f.read()print(content)f.close()#必须显式关闭输出结果:file1.txt文件的内容"hellopython"若文件不存在,将抛出FileNotFoundError异常

with语句自动管理with语句的优势自动关闭文件,无需手动调用close()方法即使发生异常也能保证文件正确关闭代码结构更清晰,可读性更强基本使用格式语法结构:withopen(文件路径,模式)as文件句柄:缩进块内进行文件操作块结束后自动关闭文件应用示例withopen("file1.txt","r")asf:content=f.read()print(content)输出结果:file1.txt文件的内容:

"hellopython"无需手动关闭文件,操作更安全可靠

文件的读取操作03函数功能说明:读取文件全部内容语法:file.read(size)size参数可选,指定读取的字节数,默认读取全部

read()函数使用示例:withopen("file2.txt","r")asf:print(f.read())若file.txt文件中包含两行数据,将一次性输出所有内容AsaBigDataTechnologystudent,I'mlearningPythonfileoperations.函数功能说明:每次读取一行内容语法:file.readline()

readline()函数使用示例:#读取单行withopen("file2.txt","r")asf:line=f.readline()print(line)程序只输出第一行数据,因为readline()函数读取单行数据:“AsaBigDataTechnologystudent,”函数功能说明:每次读取一行内容语法:file.readline()

readline()函数使用示例:#可以通过while循环或者for循环逐行读取数据withopen("file2.txt","r")asf:line=f.readline()

whileline:print(line.strip())line=f.readline()withopen("file2.txt","r")asf:

forlineinf:clean_line=line.strip()#移除换行符和两端空格print(clean_line)函数功能说明:读取文件全部行数据语法:file.readlines()返回:列表,每行作为列表的一个元素

readlines()函数使用示例:#读取全部行withopen("file2.txt","r",encoding="utf-8")asf:lines=f.readlines()#返回列表,每行作为列表的一个元素#去除每行的换行符并打印forlineinlines:clean_line=line.strip()#移除行首尾的空白字符和换行符

print(clean_line)

文件写入操作04函数功能说明:写入单行字符串语法:file.write(string)返回值:写入的字符数

write()函数使用示例:#写入单行withopen("output.txt","w")asf:f.write("Firstline\n")使用“w”模式写入第一行数据“Firstline\n”“w”模式写入操作,会覆盖文件原有内容函数功能说明:写入字符串列表语法:file.writelines(lines)

writelines()函数使用示例:#写入多行lines=["Line1\n","Line2\n"]withopen("output.txt","a")asf:f.writelines(lines)使用“a”模式不会覆盖文件原有内容特点:覆盖原有内容应用场景:创建新文件或完全重写文件注意事项:使用前确认是否需要保留原文件内容"w"写入模式特点:在文件末尾添加内容,不影响原有内容应用场景:日志记录、数据追加"a"追加模式

文件写入模式详解

文件模式组合功能:读写模式,不会创建新文件特点:文件指针初始在文件开头使用注意:写入会覆盖原有内容01"r+"模式功能:读写模式,会创建新文件或覆盖已有文件特点:文件指针初始在文件开头使用场景:需要同时读写的场景02"w+"模式功能:追加读写模式,文件指针初始在文件末尾特点:写入总是追加到文件末尾读取前需移动文件指针到开头03"a+"模式文件的基本操作——数据采集技术主讲人:李爱菊

中国人民大学出版社CHINARENMINUNIVERSITYPRESS

谢谢大家

主讲人:李爱菊

时间:2025年9月任务4.2文件的定位和管理——数据采集技术中国人民大学出版社CHINARENMINUNIVERSITYPRESS

任务描述010203知识点定位文件管理文件和目录

任务描述01

任务描述建军发现文件指针可能指向文件的不同位置,要想灵活操作文件,就需要使用Python的文件定位和管理功能,本任务将通过示例学习文件的定位、管理以及目录的管理,具体思路为:(1)使用seek()函数定位文件的读写位置。(2)使用tell()函数查询当前文件读写位置。(3)使用truncate()函数截断文件至指定字节数。(4)使用os模块对文件及目录进行查找、判断、创建、删除等操作。

定位文件02

定位文件文件指针定位

通过seek()函数实现文件指针的精确定位,支持相对或绝对位置调整。当前位置查询

使用tell()函数实时获取文件读写指针的当前位置信息。文件内容截断利用truncate()函数按指定字节数截断文件,实现高效内容管理。函数功能说明:移动文件指针到指定位置,定位后续读写文件的起始点语法:seek(offset,whence)offset参数:偏移字节数(可以为正负值)whence参数:基准位置(0=文件头,1=当前位置,2=文件尾)

seek()函数使用示例:withopen("file2.txt","r")asf:f.seek(5,0)#从文件头移动5字节print(f.read(8))#读取后续8字节内容若file2.txt文件内容为:AsaBigDataTechnologystudent,I'mlearningPythonfileoperations.本程序功能为:从文件开头处向后移动5个字符,然后连续读取8个字符,输出的结果是“BigData”。函数功能说明:移动文件指针到指定位置,定位后续读写文件的起始点语法:seek(offset,whence)offset参数:偏移字节数(可以为正负值)whence参数:基准位置(0=文件头,1=当前位置,2=文件尾)

seek()函数使用示例:withopen("file2.txt","rb")asf:f.seek(-11,2)#从文件尾向前移动11字节print(f.read().decode())#读取剩余内容本程序功能为:

从文件末尾处向前移动11个字符,然后连续读取文件从当前位置到文件结尾所有的字符,输出的结果是“operations.”。注意:decode()函数将字节对象转换为字符串。函数功能说明:移动文件指针到指定位置,定位后续读写文件的起始点语法:seek(offset,whence)offset参数:偏移字节数(可以为正负值)whence参数:基准位置(0=文件头,1=当前位置,2=文件尾)

seek()函数使用示例:withopen("file2.txt","rb")asf:f.seek(5,0)#从文件头移动5字节f.read(4)#读取4个字节print(f.read(4).decode())#从当前位置读取4个字节本程序功能为:

第三行代码读取4个字节后,第四行代码从文件的当前位置再向后读取4个字节。由于文件定位时,很容易由于指针位于字符中间而导致读取失败(如位于一个中文字符位置的中间),所以从当前位置读取,也要使用二进制方式打开文件(“rb”),此程序的运行结果是“Data”。函数功能说明:返回当前文件指针的位置(相对于文件头的字节数)语法:file.tell()

tell()函数使用示例:withopen("file2.txt","r")asf:print(f.tell())#初始位置0f.read(5)print(f.tell())#输出5(读取5字符后指针位置)函数功能说明:返回当前文件指针的位置(相对于文件头的字节数)语法:file.tell()

tell()函数使用示例:withopen("file2.txt","rb")asf:f.seek(-11,2)print(f.tell())#输出60(指针已移动到第60字节)print(f.read(10).decode())#输出operationsprint(f.tell())#输出70(读取10个字节后指针位置)print(f.read().decode())#输出最后的标点符号“.”函数功能说明:截断文件至指定字节数(若未指定size,则截断至当前位置)语法:file.truncate(size)

truncate()函数使用示例:withopen("file2.txt","r+")asf:f.seek(13)f.truncate()#截断文件,仅保留前13字节程序执行后,file2.txt文件只剩下前13个字符:“AsaBigData”。这里,file2.txt原来的内容是:AsaBigDataTechnologystudent,I'mlearningPythonfileoperations.

管理文件和目录03Python标准库中提供了os模块,提供跨平台的文件管理、目录操作、路径处理等功能。其主要功能有文件及目录的检查、文件及目录的创建、文件及目录的删除、路径的拼接等多种功能。

检查文件是否存在使用示例:importosifos.path.exists("file3.txt"):print("文件存在")else:print("文件未找到")

检查目录是否存在使用示例:directory="datas"ifnotos.path.exists(directory):os.makedirs(directory)#自动创建缺失目录Python标准库中提供了os模块,提供跨平台的文件管理、目录操作、路径处理等功能。其主要功能有文件及目录的检查、文件及目录的创建、文件及目录的删除、路径的拼接等多种功能。

判断是文件或目录使用示例:is_file=os.path.isfile('file3.txt')#若存在,返回Trueprint(is_file)is_dir=os.path.isdir('datas/')#若存在,返回Trueprint(is_dir)#统计子目录数量‌:dir_count=sum(os.path.isdir(f)forfinos.listdir())print(dir_count)#使用os.path.isdir()函数,查找当前路径下所有的子目录的个数。

仅删除文件不删除目录使用示例:target="temp.csv"ifos.path.isfile(target):os.remove(target)#仅删除文件,避免误删目录#检查“temp.csv”文件是否存在,如果存在,则删除该文件,不会删除同名的目录。

递归创建多级嵌套目录使用示例:os.makedirs("project/bigdata/2025",exist_ok=True)#自动创建多级目录#在当前目录下,递归创建多级目录,如果该目录已经存在了,“exist_ok=True”的作用是不报错;如果不使用该参数,则会提示“当文件已存在时,无法创建该文件。”

动态构建文件路径使用示例:base_url="project"second_url="bigdata"third_url="2025"file_path=os.path.join(base_url,second_url,third_url,'a.txt')print(file_path)#程序运行结果为“project\bigdata\2025\a.txt”,可见使用os.path.join可以动态构建文件的路径。假设在“project/bigdata/2025”目录下有a.txt、b.txt、c.txt等多个文件。可以通过os.path.join()函数来动态构建文件的路径。

批量删除文件使用示例:forfileinos.listdir(os.path.join(base_url,second_url,third_url)):iffile.endswith(".txt"):

os.remove(os.path.join(base_url,second_url,third_url,file))#批量删除文件#“project\bigdata\2025\”目录下a.txt、b.txt、c.txt等多个文件都被删除了。使用os.remove()可以删除文件,如果结合os.path.join动态构建文件路径,则可以实现批量删除目录下所有的文件。

列出目录内容使用示例:#获取当前目录下的所有条目‌:print(os.listdir())#过滤特定扩展名文件‌:csv_files=[fforfinos.listdir("datas")iff.endswith(".csv")]print(csv_files)程序说明:第二行代码列出了当前路径下所有的文件和子目录的名称,如:['.gitignore','4.1.1.py',……,'b5.py','datas',……]第四行代码列出了当前路径下“datas”子目录下,扩展名为“csv”的所有文件:['a.csv']使用os.listdir()可以列出当前目录下所有的文件及子目录的名字,返回值类型是列表。如果当前目录下没有任何子目录或者文件,则返回空列表“[]”。如果在os.listdir()函数中写上查找目录,则列出相应目录下所有的文件及子目录的名字。

使用try…except语句处理异常使用示例:try:withopen("data.txt","r")asf:content=f.read()exceptFileNotFoundError:print("文件不存在,请检查路径")#使用try…except…语句可以避免文件或者目录不存在时,代码执行区出现红色的警告文字,可以友好地提示用户该文件不存在,避免后续程序的执行。文件或目录执行过程中,经常出现文件或目录不存在等异常情况,使用try…except…语句可以较好地处理这些异常的发生。文件的基本操作——数据采集技术主讲人:李爱菊

中国人民大学出版社CHINARENMINUNIVERSITYPRESS

谢谢大家

主讲人:李爱菊

时间:2025年9月任务4.3CSV文件的应用——数据采集技术中国人民大学出版社CHINARENMINUNIVERSITYPRESS

任务描述010203知识点CSV文件格式读写CSV文件

04CSV转JSON文件

任务描述01

任务描述建军用Python爬取数据后,想用文件保存数据,并做进一步的分析。他了解到CSV文件、JSON文件都是目前非常流行的文件格式,本任务将练习CSV文件的读写等操作,CSV文件与JSON文件之间的转换操作,具体思路为:(1)了解什么是CSV文件及其特点和优势。(2)学习使用CSV文件的读写函数。(3)用Python的pandas模块读写CSV文件。(4)学习CSV文件转JSON文件的方法。CSV文件格式02

CSV文件格式学号,姓名,性别,年龄,城市1,张三,男,18,济南2,李四,,19,烟台3,赵五,女,18,青岛01普通CSV格式学号,姓名,性别,年龄,地址1,张三,男,18,"济南市,历下区"2,李四,,19,"烟台市芝罘区""烟台北站"""3,赵五,女,18,"青岛市,市南区"02含逗号、双引号等特殊字符的CSV文件学号,姓名,地址1,张三,”山东省济南市历下区新泺大街,齐鲁软件园北门”2,李四,"山东省烟台市芝罘区北马路135号‌‌,""烟台火车站""北广场北站出口"03含回车换行符的CSV文件CSV(Comma-SeparatedValues,逗号分隔值)是一种‌纯文本文件格式。CSV文件的每一行都是一条数据记录,每条记录由一个或多个字段组成,字段间用逗号(或其他符号)分隔,设计简单,易于使用。

读写CSV文件03

读写CSV文件0102读CSV文件importpandasaspddf=pd.read_csv('data.csv',encoding="gbk")print(df.head())写CSV文件importpandasaspddf=pd.read_csv('data.csv',encoding="gbk",na_values=["N/A","-","null"])print(df.head())df.to_csv("output_na.csv",na_rep="",header=False,index=False)CSV转JSON文件04JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。JSON数据由两种主要类型的元素组成:对象(Object)和数组(Array)。对象(Object)以大括号{}表示,里面存放键值对组成的数据结构,键(Key)必须是字符串,值(Value)可以是任何类型的数据。

JSON文件{"name":"zhangsan","age":30,"city":"Beijing"}数组(Array)以方括号[]表示,是一组有序的值,可以是任何类型的对象,包括数字、字符串、布尔值、其他数组或对象等。在JSON文件中,一般用数组存放多个JSON对象。

JSON文件[{"name":"zhangsan","age":30,"city":"Beijing"},{"name":"lisi","age":29,"city":"Shanghai"},]

案例:CSV文件转JSON文件准备CSV文件datas.csv文件:sno,sanme,sex,age,city1,zhangs,male,18,JN2,lisi,female,19,YT3,zhaow,female,18,QD使用Python代码实现格式转换

#读取CSV文件并转换为JSON格式withopen(csv_file,'r',encoding='utf-8')ascsvfile:csv_reader=csv.DictReader(csvfile)json_data=list(csv_reader)检查程序运行结果运行上述代码后,在同一目录下会得到一个名为datas.json的文件。010203

#将数据写入JSON文件withopen(json_file,'w',encoding='utf-8')asjsonfile:json.dump(json_data,jsonfile,indent=4)#使用indent设置每行缩进的字符数,以美化显示格式datas.json文件

程序运行结果[{"sno":"1","sanme":"zhangs","sex":"male","age":"18","city":"JN"},{"sno":"2","sanme":"lisi","sex":"female","age":"19","city":"YT"},{"sno":"3","sanme":"zhaow","sex":"female","age":"18","city":"QD"}]文件的基本操作——数据采集技术主讲人:李爱菊

中国人民大学出版社CHINARENMINUNIVERSITYPRESS

谢谢大家

主讲人:李爱菊

时间:2025年9月任务4.4数据库的使用——数据采集技术中国人民大学出版社CHINARENMINUNIVERSITYPRESS

任务描述010203知识点关系型数据库简介MySQL数据库应用

04Navicat的安装使用

05Python操作MySQL

任务描述01

任务描述建军了解到数据库是进行数据存储和管理的重要工具,他想学习使用数据库存储和管理爬虫数据,本任务将介绍数据库、关系型数据库、MySQL数据库的使用方法,具体思路为:(1)了解关系型数据库的特点及优缺点。(2)学习MySQL数据库的安装和使用。(3)学习MySQL数据库的查询、增加、修改、删除操作。(4)用Python程序读写MySQL数据库的数据。

关系型数据库简介02

关系型数据库简介关系型数据库(RelationalDatabase)是一种基于关系模型的数据库管理系统(DBMS),它通过表格的形式存储数据,表与表之间通过关系连接。1970年,IBM研究员E.F.Codd发表论文《大型共享数据库的关系模型》,首次提出‌关系模型‌理论,奠定了关系型数据库的基础。1974年,IBM启动‌SystemR‌项目,首次实现SQL(结构化查询语言)原型。同期,加州大学伯克利分校开发了‌Ingres‌,成为开源关系数据库的鼻祖。1980年代,随着Oracle、DB2、Sybase等商业化数据库的崛起,关系型数据库进入高速发展期。1990年代,MySQL、PostgreSQL等开源数据库诞生,降低了企业使用成本。21世纪以来,云计算技术推动关系型数据库向云端迁移,诞生了AmazonRDS、阿里云PolarDB等云原生数据库。

关系型数据库主要特点(1)数据结构化‌:数据以表格形式存储,每个表由行和列组成,行表示记录,列表示属性。这种结构化方式使得数据易于理解和管理。(2)‌SQL支持‌:通过结构化查询语言(SQL)实现数据定义、查询、更新和控制,语法统一且易学。(3)事务支持‌:关系型数据库支持事务管理,保障事务的‌原子性‌(Atomicity)、‌一致性‌(Consistency)、‌隔离性‌(Isolation)、‌持久性‌(Durability),确保数据可靠。(4)‌范式化设计‌:通过范式理论(如第一范式至第三范式)减少数据冗余,提升数据一致性。(5)‌严格的权限管理‌:支持用户角色划分和细粒度权限控制,增强数据安全性。(6)数据关系:通过外键等机制,关系型数据库建立表与表之间的关系,支持复杂的数据查询和分析。

关系型数据库的优点(1)‌数据强一致性‌:通过约束和事务管理,关系型数据库能够有效维护数据的一致性和完整性,降低数据错误的风险。适用于银行、电商等对数据准确性要求高的场景。(2)‌强大的查询能力‌:支持多表关联、子查询、聚合函数等复杂操作。(3)‌成熟生态‌:关系型数据库有着丰富的文档、教程和社区支持,用户可以方便地获取帮助和资源。工具链完善,许多企业提供了可视化工具帮助数据库的开发使用,如Navicat、ETL工具等。

关系型数据库的局限性(1)‌扩展性瓶颈‌:传统架构难以水平扩展,高并发场景需依赖分库分表或分布式方案。(2)‌非结构化数据处理弱‌:对JSON、图数据等支持有限(但PostgreSQL等已优化此问题)。(3)‌维护成本高‌:需专业DBA进行索引优化、事务调优等。

关系型数据库的主流产品(1)‌Oracle‌:企业级首选,功能全面,支持超大规模数据处理,但商业授权费用高昂。(2)‌MySQL‌:开源轻量,适合Web应用(如WordPress、电商平台),被Meta、Twitter广泛使用。(3)‌SQLServer‌:微软生态核心,与.NET技术栈深度集成,常用于企业级Windows服务。(4)‌PostgreSQL‌:功能最丰富的开源数据库,支持JSON、GIS地理数据,适合科研和复杂业务。(5)‌SQLite‌:嵌入式数据库,无需独立服务,适用于移动端(如Android、iOS)和小型应用。(6)‌云数据库‌:如AWSAurora、阿里云RDS,提供高可用、自动备份等托管服务,降低运维负担。MySQL数据库应用03

MySQL数据库MySQL是一种开源的关系型数据库管理系统(RDBMS),由瑞典MySQLAB公司开发,现由Oracle公司维护。它使用结构化查询语言(SQL)进行数据的管理和操作,因其高效、可靠和易于使用而广泛应用于各个领域。MySQL的安装、使用思路为:(1)进入MySQL官网,下载安装文件。(2)安装并配置MySQL的用户名、密码、网络协议等(3)验证MySQL是否安装成功(4)可视化管理MySQL的工具Navi

温馨提示

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

评论

0/150

提交评论