前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实验五 Python文件操作实验

实验五 Python文件操作实验

原创
作者头像
背雷管的小青年
修改2020-06-08 18:09:25
3.5K0
修改2020-06-08 18:09:25
举报

实验五 Python文件操作实验

一、实验目的与要求

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分析程序运行结果:阅读下面的程序,分析代码是否能够编译通过。如果能编译通过,请列出运行的结果,否则请说明编译失败的原因。

(1)def funX():

x = 5

def funY():

nonlocal x

x += 1

return x

return funY

a = funX()

print(a())

print(a())

print(a())

(2)def funX():

x = 5

def funY():

nonlocal x

x += 1

return x

return funY

a = funX

print(a()())

print(a()())

print(a()())

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

源码:

代码语言:javascript
复制
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,其他字符不变化。

源码:

代码语言:javascript
复制
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)将学生信息存储到文件中。

源码:

代码语言:javascript
复制
import json
代码语言:javascript
复制
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()

elif key == 2: delStudent(studentInfos) elif key == 3: modifyStudent() elif key == 4: showStudent() elif key == 0: exit = input("真的要退出系统吗?(Yes or No):") if exit == "Yes": with open("info.txt","w+") as f: jsObj = json.dumps(studentInfos) f.writelines(jsObj) break elif exit == "No": pass else: print("输入有误,请重新输入") else: print("输入有误,请重新输入") main()

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实验五 Python文件操作实验
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档