美文网首页
Python文件操作,掌握文件的不同操作,熟悉闭包、装饰器和内置

Python文件操作,掌握文件的不同操作,熟悉闭包、装饰器和内置

作者: 孤城暮雨丶 | 来源:发表于2021-01-09 13:48 被阅读0次

    本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理

    本文章来自腾讯云 作者:背雷管的小青年

    私信小编回复01可领取学习资料以及学习视频

    一、实验目的与要求

    1、掌握文件的打开和关闭。

    2、掌握文件的不同操作,如读写、重命名、删除。

    3、熟悉闭包、装饰器以及常见内置函数的使用。

    二、实验原理

    在python中,使用open方法打开文件,凡是打开的文件,切记要使用close方法关闭文件。向文件写数据,需要使用write方法来完成,在操作某个文件时,每调用一次write方法,写入的数据就会追加到文件末尾。读文件:方式1:使用read方法读取文件;方式2:使用readlines方法读取文件;方式3:使用readline方法一行一行读数据。文件的定位读写:方式1:使用tell方法来获取文件当前的读写位置;方式2:使用seek方法来获取文件当前的读写位置。os模块中的rename()方法可以完成文件的重命名;os模块中的remove()方法可以完成文件的删除操作。os模块的mkdir方法用来创建文件夹;os模块的getcwd方法用来获取当前的目录;os模块的chdir方法用来改变默认目录;os模块的listdir方法用于获取目录列表;os模块的rmdir方法用于删除文件夹。

    Python函数是支持嵌套的。如果在一个内部函数中对外部函数作用域(非全局作用域)的变量进行引用,那么内部函数就会被称为闭包。闭包需要满足如下3个条件:(1)存在于两个嵌套关系的函数中,并且闭包是内部函数;(2)内部函数引用了外部函数的变量(自由变量);(3)外部函数会把内部函数的函数名称返回。

    假设我们已经开发了一个本有的函数,后续可能会增加临时的需求,例如插入日志,我们可以增加一个包裹函数,由它来负责这些额外的需求,这个包裹函数就是装饰器。装饰器主要应用在如下场景:(1)引入日志;(2)函数执行时间统计;(3)执行函数前预备处理;(4)执行函数后清理功能;(5)权限校验;(6)缓存。装饰器是一个函数,它需要接收一个参数,该参数表示被修饰的函数。通过在函数定义的前面添加@符号和装饰器名,实现装饰器对函数的包装。多个装饰器应用在一个函数上,调用顺序是从下至上。如果给装饰器添加参数,需要增加一层包装,先传递参数,然后再传递函数名。

    map函数会根据提供的函数对指定的序列做映射。map函数的作用是以参数序列中的每个元素分别调用function函数,把每次调用后返回的结果保存为对象;filter函数会对指定序列执行过滤操作;reduce函数会对参数序列中的元素进行累积。在Python 3中,reduce函数已经被从全局名字空间里面移除了,它现在被放置在fucntools模块中,使用时需要先引入。

    三、预习与准备

    1、提前预习Python文件操作以及高级函数的语法知识,实验之前编写好程序代码。

    2、练习关于Python文件及文件夹的常见操作。

    四、实验过程记载

    实验题1分析程序运行结果:阅读下面的程序,分析代码是否能够编译通过。如果能编译通过,请列出运行的结果,否则请说明编译失败的原因。


    在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

    实验题2
    已知有个列表[1,2,3,4,5],让列表的每个元素加1,把结果不能被2整除的元素筛选出来。

    源码:

    sum=map(lambda x:x+1,[1,2,3,4,5])
    result=filter(lambda x:x%2,list(sum))
    print(list(result))
    
    
    在这里插入图片描述

    实验题3
    打开一个英文的文本文件,将该文件中的每个英文字母加密后写入到一个新文件。加密的方法是:将A变成B,B变成C,……,Y变成Z,Z变成A;a变成b,b变成c,……,y变成z,z变成a,其他字符不变化。

    源码:

    file=open("key.txt","r")
    content=file.readline()
    list1=list(content)
    file.close()
    for i in range(0,len(list1)):
        if list1[i].islower():
            if list1[i]=='z':
                list1[i]=chr(97)
                continue
    
            num=ord(list1[i])
            list1[i]=chr(num+1)
        if list1[i].isupper():
            if list1[i]=='Z':
                list1[i]=chr(65)
                continue
            num=ord(list1[i])
            list1[i]=chr(num+1)
    new_Str=''.join(list1)
    print(new_Str)
    file=open("new.txt","w+")
    file.write(new_Str)
    file.close()
    
    
    在这里插入图片描述

    实验题4
    使用Python语言开发一个简单的学生管理系统。运用该学生管理系统编辑学生的信息,适时更新学生的资料。例如,新生入校,要在学生管理系统中录入刚入校的学生信息。请实现一个学生管理系统,要求如下。

    1. 使用自定义函数,完成对程序的模块化;
    2. 学生信息至少包含:姓名、性别及手机号;
    3. 该系统具有的功能:添加、删除、修改、显示、退出系统;
    4. 将学生信息存储到文件中。

    源码:

    import json
    
    
    studentInfos = []
    
     #打印菜单
    def printMenu():
       print("=" * 30)
       print("  学生管理系统")
       print("1.添加学生信息")
       print("2.删除学生信息")
       print("3.修改学生信息")
       print("4.显示所有学生信息")
       print("0.退出系统")
       print("=" * 30)
    
    #添加学生信息
    def addStudent():
       newName = input("请输入新的学生名字:")
       newSex = input("请输入新的学生性别(男/女):")
       newPhone = input("请输入新的学生电话:")
       newInfo = {}
       newInfo["name"] = newName
       newInfo["sex"] = newSex
       newInfo["phone"] = newPhone
       studentInfos.append(newInfo)
    
    #删除学生信息
    def delStudent(info):
       delNum = int(input("请输入要删除的序号:")) - 1
       del info[delNum]
    
    #修改学生信息
    def modifyStudent():
       studentId = int(input("请输入要修改的序号:")) - 1
       newName = input("请输入新的学生名字:")
       newSex = input("请输入新的学生性别(男/女):")
       newPhone = input("请输入新的学生电话:")
       newInfo = {}
       newInfo["name"] = newName
       newInfo["sex"] = newSex
       newInfo["phone"] = newPhone
       studentInfos[studentId] = newInfo
    
    #查看所有学生信息
    def showStudent():
       print("=" * 30)
       print("学生信息如下")
       print("=" * 30)
       print("序号    姓名    性别    手机号")
       num = 1
       for tempInfo in studentInfos:
          print(" %d   %s  %s   %s"%(num,tempInfo["name"],tempInfo["sex"],tempInfo["phone"]))
          num += 1
    
    #main函数
    def main():
       while 1 == 1:
          printMenu()
          key = int(input("请输入操作的序号:"))
          if key == 1:
             addStudent()
    
    
    在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

    相关文章

      网友评论

          本文标题:Python文件操作,掌握文件的不同操作,熟悉闭包、装饰器和内置

          本文链接:https://www.haomeiwen.com/subject/cxecaktx.html