Python程序设计基础案例教程 课件 案例6-1 智慧农业光照数据管理系统_第1页
Python程序设计基础案例教程 课件 案例6-1 智慧农业光照数据管理系统_第2页
Python程序设计基础案例教程 课件 案例6-1 智慧农业光照数据管理系统_第3页
Python程序设计基础案例教程 课件 案例6-1 智慧农业光照数据管理系统_第4页
Python程序设计基础案例教程 课件 案例6-1 智慧农业光照数据管理系统_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

文件与目录操作学习目标/Target掌握文件与目录的基础概念及Python文件操作原理熟练掌握文件的打开、关闭、读写操作,完成数据的存储与读取掌握使用pandas库实现Excel文件的操作熟练运用文件路径操作函数,实现目录与文件的创建、删除、复制等管理能够运用csv模块进行CSV文件读写与数据处理。章节概述/Summary在Python编程中,函数是构建复杂程序的基础模块。自定义函数赋予开发者更大的创作自由,开发者可以将特定功能代码封装成独立单元,实现代码复用与逻辑结构化。本章将深入剖析自定义函数的定义、调用、参数传递与解包、返回值等核心知识,助力读者掌握灵活定制功能模块的编程技巧,轻松应对日益复杂的程序开发需求。目录/Contents0102【案例6-1】智慧农业光照数据管理系统【案例6-2】农产品库存管理【案例6-1】智慧农业光照数据管理系统01案例分析

随着农业现代化发展,传统人工监测光照的方式效率低、误差大,已无法满足智慧农业精准化、智能化需求。开发一个用于管理智慧农业中光照传感器数据的系统。该系统可以实现传感器数据的记录、读取、历史数据归档以及系统日志管理等功能,帮助用户有效地管理和维护农业光照数据。知识储备文件概述文件路径操作文件与目录管理文件的打开与关闭知识储备文件的读写文件的定位读写知识储备—文件概述

文件是存储在外部存储设备(如硬盘、U盘)上的相关数据的集合,用于长期保存数据,实现数据的持久化。文件可以包含各种类型的数据,如文本、图像、音频等。文件在Python编程中扮演着至关重要的角色。它可以用于存储程序运行时产生的数据,如日志文件、配置文件等;也可以用于读取外部数据源,如从CSV文件中读取数据进行分析,从文本文件中读取配置信息等。此外,文件还可以用于实现程序之间的数据交换,一个程序将数据写入文件,另一个程序从文件中读取数据,从而实现不同程序之间的通信和协作。知识储备—文件概述1.常用文件类型文本文件文本文件是最常见的文件类型之一,它以纯文本形式存储数据,文件中的每一个字节都代表一个字符。Python可以方便地读取和写入文本文件,常见的文本文件扩展名有.txt、.py、.html等。在处理文本文件时,Python会根据系统默认的编码方式对文件进行编码和解码,常见的编码方式有UTF-8、GBK等,每个字符对应特定的字节序列,例如UTF-8编码下,英文字母占1个字节,中文字符通常占3个字节。二进制文件二进制文件以二进制形式存储数据,它可以存储任意类型的数据,如图像、音频、视频等。与文本文件不同,二进制文件不能直接用文本编辑器打开查看,需要使用特定的软件进行处理。Python提供了专门的二进制文件操作模式,使得开发者能够方便地对二进制文件进行读写操作,常见的二进制文件扩展名有.jpg、.mp3、.pdf等。知识储备—文件概述2.文件路径的表示与分类文件路径是指文件在文件系统中的位置信息,它用于标识文件的存储位置。文件路径分为绝对路径和相对路径。绝对路径是从根目录开始的完整路径,它唯一地标识了文件在文件系统中的位置;相对路径是相对于当前工作目录的路径,它以当前工作目录为起点,标识文件的存储位置。绝对路径绝对路径是从文件系统的根目录开始,完整描述文件位置的路径。在不同操作系统中,绝对路径的格式有所差异。C:\Users\username\Documents\file.txt路径文件名主干扩展名知识储备—文件概述

相对路径相对路径是相对于当前工作目录的路径,它以当前工作目录为起点,标识文件的存储位置。在Python中,当前工作目录是指程序运行时的默认目录。相对路径中常用的特殊符号有:.表示当前目录。例如当前工作目录为/home/user,若文件file.txt位于当前目录下,则其相对路径可表示为./file.txt,实际使用中./常可省略,直接写成file.txt。..表示上级目录。若file.txt位于当前目录的上级目录的documents文件夹中,则相对路径为../documents/file.txt。相对路径的优点是简洁灵活,在项目目录结构内移动文件或程序时,路径无需大幅修改;缺点是依赖当前工作目录,若工作目录改变,可能导致路径失效。知识储备—文件路径操作文件路径的操作是非常常见的任务,无论是读取文件、写入文件还是管理文件目录结构,都离不开对路径的处理。Python提供了两个主要的模块来处理文件路径:os模块和pathlib模块。知识储备—文件路径操作1.os模块os模块是Python标准库的一部分,提供了许多与操作系统交互的功能,包括文件路径的操作。以下是os模块中常用的路径操作函数:os.path.join():用于将多个路径片段组合成一个完整的路径字符串。os.path.exists():检查指定路径是否存在。os.path.isfile():检查路径是否为文件。os.path.isdir():检查路径是否为目录。os.path.abspath():获取绝对路径。os.path.basename():获取路径中的文件名部分。os.path.dirname():获取路径中的目录部分。os.path.getsize():获取指定文件的大小。os.path.getctime:获取指定文件或目录的创建时间。知识储备—文件路径操作无缝衔接单元测试importos #导入os模块path=r"C:\Users\username\Documents\file.txt"#获取目录名dirname=os.path.dirname(path)print(f"目录名:{dirname}")#获取文件名basename=os.path.basename(path)print(f"文件名:{basename}")…………省略部分代码print(f"是否是文件:{is_file}")#检查是否是目录is_dir=os.path.isdir(path) #True或Falseprint(f"是否是目录:{is_dir}")示例1使用os.path模块操作路径。知识储备—文件路径操作2.pathlib模块pathlib是Python3.4引入的一个新模块,它提供了一个面向对象的方式来处理文件系统路径。相比于os模块,pathlib的设计更加现代化和直观。pathlib模块的核心是Path类,它可以表示文件系统中的路径,并提供了丰富的属性和方法来操作路径。以下是pathlib模块中常用的路径操作方法:Path.joinpath():将多个路径片段组合成一个路径。Path.exists():检查路径是否存在。Path.is_file():检查路径是否为文件。Path.is_dir():检查路径是否为目录。Path.resolve():获取绝对路径。P:获取路径中的文件名部分。Path.parent:获取路径中的目录部分。知识储备—文件路径操作无缝衔接单元测试frompathlibimportPath #导入pathlib模块的Path类path=Path(r"C:\Users\username\Documents\file.txt")#获取目录名dirname=path.parentprint(f"目录名:{dirname}")#获取文件名…………省略部分代码#检查是否是文件is_file=path.is_file() #True或Falseprint(f"是否是文件:{is_file}")#检查是否是目录is_dir=path.is_dir() #True或Falseprint(f"是否是目录:{is_dir}")#获取绝对路径abs_path=path.absolute()print(f"绝对路径:{abs_path}")示例2使用pathlib模块操作路径。知识储备—文件与目录管理在Python中,处理文件和目录(文件夹)的操作可以通过内置的os模块和shutil模块来实现,这两个模块提供了丰富的方法来管理文件系统。知识储备—文件与目录管理1.os模块os模块提供了与操作系统进行交互的接口,包括文件和目录操作、进程管理、环境变量等。它是Python中最常用的标准库之一,提供了许多方便的函数和方法,使得开发者能够轻松地执行各种系统级操作。在使用os模块之前,需要先导入它。导入os模块的代码如下:importos语法格式知识储备—文件与目录管理下面介绍os模块中常用的函数。示例获取当前工作目录os.getcwd()函数用于获取当前工作目录的路径。当前工作目录是Python脚本执行时所在的目录。使用os模块进行目录与文件管理。current_directory=os.getcwd()print("当前工作目录:",current_directory)改变当前工作目录os.chdir(path)函数用于改变当前工作目录。path是想要切换到的目录路径。os.chdir("C://")print("新的工作目录:",os.getcwd())知识储备—文件与目录管理下面介绍os模块中常用的函数。创建目录os.mkdir(path)和os.makedirs(path)分别用于创建单级和多级目录。mkdir只创建单级目录,而makedirs可以递归创建多层目录。#创建单个目录(若目录已存在,抛出FileExistsError)os.mkdir("new_dir")#递归创建多级目录(若中间目录不存在,自动创建)os.makedirs("parent/child/grandchild")删除目录os.rmdir(path)函数用于删除一个空目录。如果目录不为空,会抛出OSError异常。os.rmdir("new_dir")知识储备—文件与目录管理下面介绍os模块中常用的函数。示例删除文件os.remove(path)函数用于删除一个文件。如果文件不存在,会抛出FileNotFoundError异常。os.remove("file_to_delete.txt")重命名文件或目录os.rename(src,dst)函数用于重命名文件或目录。src:表示旧的目录名或文件名。dst:表示新的目录名或文件名。os.rename("old_file.txt","new_file.txt") #重命名文件os.rename("old_dir","new_dir")#重命名目录)知识储备—文件与目录管理下面介绍os模块中常用的函数。示例列出目录内容os.listdir(path)函数用于返回path指定的文件夹包含的文件或文件夹的名字的列表。contents=os.listdir(".")print("当前目录内容:",contents)知识储备—文件与目录管理2.shutil模块shutil模块是在os模块的基础上构建的高级文件操作工具集,提供了一系列用于文件和目录操作的高级函数,如复制、移动、删除文件等。它通过封装底层的系统调用,使得文件操作变得更加简单和安全。在使用shutil模块之前,需要先导入它。导入shutil模块的代码如下:importshutil语法格式知识储备—文件的目录管理下面介绍shutil模块中常用的函数。示例复制文件shutil.copy(src,dst)函数用于将文件从源路径src复制到目标路径dst。shutil.copy2(src,dst)在复制文件的同时保留元数据(例如文件的创建时间和修改时间)shutil.copy("source_file.txt","destination_folder")#复制文件,不保留元数据shutil.copy2("source_file.txt","destination_folder"))#复制文件,保留元数据 移动文件或目录shutil.move(src,dst)函数用于将文件或目录从源路径src移动到目标路径dst。shutil.move("source_file.txt","destination_folder") #移动文件shutil.move("old_name.txt","new_name.txt") #移动并重命名文件知识储备—文件与目录管理下面介绍shutil模块中常用的函数。示例复制目录shutil.copytree(src,dst)函数用于递归复制整个目录及其内容。shutil.copytree("source_folder","destination_folder") 删除目录shutil.rmtree(path)函数用于递归地删除指定路径下的所有文件和子目录。shutil.rmtree("directory_to_delete")文件操作是Python编程中的基础技能,主要涉及打开文件、读写文件内容以及关闭文件三个核心步骤。当用户需要对文件进行读取或写入操作时,首先需要将文件打开,建立与文件的连接,然后在完成操作以后将文件关闭,断开与文件的连接,以便及时释放资源并确保数据的完整性。知识储备—文件的打开与关闭知识储备—文件的打开与关闭无缝衔接单元测试1.打开文件在Python中,使用内置的open()函数来打开文件,并返回文件对象。该函数可以指定文件路径、打开模式和编码方式。语法格式如下:open(file,mode='r',encoding=None,errors=None,newline=None)语法格式参数说明:file:必需参数,一个字符串,表示要打开的文件的名称。mode:可选参数,字符串,表示打开文件的模式。默认值是“r”,即只读模式。encoding:可选参数,字符串,表示文件的编码方式。例如“utf-8”。默认情况下,如果未指定且文件是打开在文本模式(非二进制模式),则使用系统的默认编码。常用的文件打开模式知识储备—文件的打开与关闭模式描述 模式描述r读取模式(默认),文件不存在时会报错w写入模式,文件不存在则创建,存在则清空内容a追加模式,文件不存在则创建,写入内容追加到文件末尾x创建模式(如果文件已存在会抛出错误)r+追加模式,文件不存在则创建,写入内容追加到文件末尾t文本模式(默认)w+读写模式,先清空文件内容,文件指针位于文件开头盖全局变量(函数内部)a+追加读写模式,文件指针位于文件末尾知识储备—文件的打开与关闭无缝衔接单元测试filel=open("E:\\a.txt") #以只读的方式打开E盘的文本文件a.txtfile2=open('b.txt','w') #以只写的方式打开当前目录的文本文件b.txtfile3=open('c.txt','w+') #以读写的方式打开文本文件c.txtfile4=open('d.txt','wb+') #以二进制读写的方式打开文本文件d.txt示例3使用open()函数打开文件,同时指定打开方式。

以只读的方式打开文件时,若待打开的文件不存在,则文件会打开失败,导致程序出现报错信息“[Errno2]Nosuchfileordirectory:‘E:\\a.txt”,可知程序在E盘下没有找到文本文件a.txt。知识储备—文件的打开与关闭无缝衔接单元测试2.关闭文件Python中可通过close()方法关闭文件,也可以使用with语句实现文件的自动关闭。withopen(文件路径,打开模式)as变量名:代码段语法格式当操作文件时,如果打开文件与关闭文件之间的操作较多,我们很容易遗漏关闭文件操作,为此Python引with语句预定义清理操作,实现文件的自动关闭。with语句的语法格式如下:filel.close()file2.close()file3.close()file4.close()知识储备—文件的打开与关闭无缝衔接单元测试withopen('a.txt','w+')asfile:print('我是with语句')示例4使用with语句自动管理文件关闭。Python提供了一系列读写文件的方法,包括读取文件的read()、readline()、readlines()方法和写文件的write()、writelines()方法。知识储备—文件的读写知识储备—文件的读写无缝衔接单元测试1.读取文件read()方法read()方法可以从指定文件中读取指定字节的数据,其语法格式如为:read(size)语法格式size参数可选,默认读取全部内容知识储备—文件的读写无缝衔接单元测试withopen('poem.txt','r',encoding='utf-8')asfile:first_10_chars=file.read(10)print(f"前10个字符:{first_10_chars}")next_5_chars=file.read(5)print(f"接下来的5个字符:{next_5_chars}")remaining_chars=file.read()print(f"剩余的所有字符:{remaining_chars}")示例5准备测试文件poem.txt。假设poem.txt中保存了一首李白的《静夜思》,内容如下(UTF-8编码):床前明月光,疑是地上霜。举头望明月,低头思故乡。使用read()方法按字符读取,示例代码如下:运行结果如下:前10个字符:床前明月光,疑是地接下来的5个字符:上霜。举剩余的所有字符:头望明月,低头思故乡。知识储备—文件的读写无缝衔接单元测试readline()方法readline()方法用于从指定文件中读取一行数据,并保留该行数据末尾的换行符\n。其语法格式如为:readline()语法格式知识储备—文件的读写无缝衔接单元测试withopen("poem.txt","r",encoding="utf-8")asfile:line1=file.readline() #读取第1行line2=file.readline() #读取第2行line3=file.readline() #读取第3行line4=file.readline() #读取第4行#输出时去除每行末尾的换行符print(line1.strip())print(line2.strip())print(line3.strip())print(line4.strip())示例6以poem.txt为例,使用readline()方法读取该文件中的数据,示例代码如下:知识储备—文件的读写无缝衔接单元测试readlines()方法readlines()方法用于一次性读取文件中的所有数据,若读取成功则返回一个字符串列表,每一行对应列表中的一个元素。其语法格式为:readlines(hint=-1)语法格式参数hint的单位为字节,用于控制要读取的行数,如果行中数据的总大小超出了hint字节,readlines()方法不会读取更多的行。知识储备—文件的读写withopen("poem.txt",'r',encoding='utf-8')asfile:print(file.readlines())示例7以poem.txt为例,使用readlines()方法读取该文件中的数据。运行结果如下:['床前明月光,\n','疑是地上霜。\n','举头望明月,\n','低头思故乡。']知识储备—文件的读写无缝衔接单元测试2.写入文件write()方法write()方法可以将指定字符串写入文件,其语法格式为:write(data)语法格式参数data表示要写入文件的数据,若数据写入成功,write()方法会返回本次写入文件的数据字节数或字符数。知识储备—文件的读写withopen('poem1.txt','w',encoding='utf-8')asfile:#写入单行文本file.write('床前明月光,\n')file.write('疑是地上霜。\n')file.write('举头望明月,\n')file.write('低头思故乡。')#读取文件验证结果withopen('poem1.txt','r',encoding='utf-8')asfile:print(file.read())示例8使用write()方法写入字符串,代码如下:运行结果如下:床前明月光,疑是地上霜。举头望明月,低头思故乡。知识储备—文件的读写无缝衔接单元测试writelines()方法writelines()方法用于将字符串或字符串列表写入文件,其语法格式为:writelines(lines)语法格式参数lines表示要写入文件中的数据,可以是一个字符串或字符串列表。若写入文件的数据在文件中需要换行,应显示指定换行符。知识储备—文件的读写lines=['两个黄鹂鸣翠柳,','一行白鹭上青天。','窗含西岭千秋雪,','门泊东吴万里船。']#打开文件并写入列表内容withopen('poem2.txt','w',encoding='utf-8')asfile:file.writelines(lines)#读取文件验证结果withopen('poem2.txt','r',encoding='utf-8')asfile:print(file.read())示例9使用writelines()方法写入字符串序列,示例代码如下:所有内容在同一行输出,运行结果如下:两个黄鹂鸣翠柳,一行白鹭上青天。窗含西岭千秋雪,门泊东吴万里船。知识储备—文件的定位读写无缝衔接单元测试seek()方法用于移动文件指针的位置,从而实现随机访问文件内容,返回移动后文件指针的新位置(字节数)。语法格式如下:seek(offset,whence=0)语法格式参数说明:offset参数表示读写位置需要移动的偏移量(字节数),可正可负。whence参数指定文件的读写位置,可选值有0、1、2,0表示文件开头(默认值),1表示当前位置,2表示文件末尾。知识储备—文件的定位读写withopen("poem.txt","r",encoding="utf-8")asfile:#定位到第6个字节(从0开始计数)file.seek(6)#读取从第6个字节到文件末尾的内容content=file.read()print(content)示例10读取poem.txt文件指定位置的内容,示例代码如下:运行结果如下:明月光,疑是地上霜。举头望明月,低头思故乡。案例实现创建名称为“智慧农业光照数据管理系统”的项目,在项目下创建名称为lightingdata_system的Python文件。准备工作案例实现STEP01导入必要的库引入系统所需的库,为后续的文件操作、随机数生成、文件复制移动、时间处理等功能提供支持。importosimportrandomimportshutilimporttimefromdatetimeimportdatetime案例实现STEP02定义配置目录定义系统所需的基础目录和子目录,用于存储日志、传感器数据和历史归档数据。使用os.path.join()函数将基础目录和子目录名称组合成完整的路径,确保在不同操作系统上路径分隔符的正确性。BASE_DIR="智慧农业数据"LOG_DIR=os.path.join(BASE_DIR,"日志")DATA_DIR=os.path.join(BASE_DIR,"传感器数据")ARCHIVE_DIR=os.path.join(BASE_DIR,"历史归档")案例实现STEP03创建必要的目录结构确保系统所需的目录结构存在,如果目录不存在则创建。使用os.makedirs()函数创建目录,exist_ok=True参数表示如果目录已经存在则不会抛出异常。defsetup_directories():fordir_pathin[LOG_DIR,DATA_DIR,ARCHIVE_DIR]:os.makedirs(dir_path,exist_ok=True)print(f"创建/验证目录:{dir_path}")案例实现STEP04记录传感器数据到文件将传感器的光照数据记录到文件中,文件按日期分类存储。首先根据当前日期创建子目录,然后根据传感器ID和时间戳生成文件名,最后使用上下文管理器打开文件并写入传感器数据。defwrite_sensor_data(sensor_id,value):#按日期创建子目录

…………省略部分代码#使用上下文管理器自动关闭文件withopen(file_path,"w")asf:f.write(f"传感器ID:{sensor_id}\n")f.write(f"时间戳:{datetime.now().isoformat()}\n")f.write(f"数值:{value}\n")f.write(f"备注:光照传感器读数")print(f"传感器{sensor_id}记录数据:{file_path}")returnfile_path案例实现STEP05定义配置目录定义系统所需的基础目录和子目录,用于存储日志、传感器数据和历史归档数据。使用os.path.join()函数将基础目录和子目录名称组合成完整的路径,确保在不同操作系统上路径分隔符的正确性。BASE_DIR="智慧农业数据"LOG_DIR=os.path.join(BASE_DIR,"日志")DATA_DIR=os.path.join(BASE_DIR,"传感器数据")ARCHIVE_DIR=os.path.join(BASE_DIR,"历史归档")案例实现STEP06记录系统活动日志将系统的活动信息记录到日志文件中,日志文件按日期命名。根据当前

温馨提示

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

评论

0/150

提交评论