实验10:文件及目录操作

一、实验目的和要求

1、掌握基本文件操作(创建、打开、关闭、写入);

2、掌握目录操作的基本操作(创建、删除、遍历);

3、了解高级文件操作(删除文件、获取文件基本信息)。

二、实验环境

软件版本:Python 3.10 64_bit

三、实验过程

1、实例01:创建并打开记录蚂蚁庄园动态的文件

(1)在IDLE中创建一个名称为antmanor_message.py的文件,然后在该文件中,首先输出一条提示信息,然后再调用open()函数创建或打开文件,最后再输出一条提示信息,代码如下:

1 print("\n","="*10,"蚂蚁庄园动态","="*10)
2 file = open('message.txt','w') #创建或打开(只写模式)保存蚂蚁庄园动态信息的文件
3 print("\n 即将显示……\n") #只打开了文件,没有其他操作

(2)运行结果如下:(此时还没有向文件写入任何内容)

2、实例02:向蚂蚁庄园的动态文件写入一条信息

(1)在IDLE中创建一个名称为antmanor_message_w.py的文件,然后在该文件中,首先应用open()函数以写方式打开一个文件,然后再调用write()方法向该文件写入一条动态信息,再调用close()方法关闭文件,代码如下:

1 print("\n","="*10,"蚂蚁庄园动态","="*10)
2 file = open('message.txt','w') #创建或打开(只写模式)保存蚂蚁庄园动态信息的文件
3 file.write("你使用了一张加速卡,小鸡撸起袖子开始双手吃饲料,进食速度大大加快。\n")#写入信息
4 print("\n 写入了一条动态……\n")
5 file.close() #关闭文件

(2)运行结果如下:(此时文件已有write()写入的信息)

(3)如果打开文件是应用了w(写入)模式,则先会清空原文件中的内容,再写入新的内容,如果打开文件是应用了a(追加)模式,则不会覆盖文件原有的内容,修改版代码如下:

1 print("\n","="*10,"蚂蚁庄园动态","="*10)
2 file = open('message.txt','a') #以追加模式打开文件
3 file.write("mingri的小鸡在你的庄园待了22分钟,吃了6g饲料之后,被你赶走了。\n")#追加一条动态信息
4 print("\n 追加了一条动态……\n")
5 file.close()

(4)运行结果如下:

3、实例03:显示蚂蚁庄园的动态

(1)在IDLE中创建一个名称为antmanor_message_r.py的文件,然后在该文件中,首先应用open()函数以只读方式打开一个文件,然后再调用read()方法读取全部动态信息,并输出,代码如下:

1 print("\n","="*25,"蚂蚁庄园动态","="*25,"\n")
2 with open('message.txt','r') as file: #打开保存蚂蚁庄园动态信息的文件
3 message = file.read() #读取全部动态信息
4 print(message) #输出动态信息
5 print("\n","="*29,"over","="*29,"\n")

(2)运行结果如下:

4、实例04:逐行显示蚂蚁庄园的动态

(1)在IDLE中创建一个名称为antmanor_message_r1.py的文件,然后在该文件中,首先应用open()函数以只读方式打开一个文件,然后应用while语句创建循环,在该循环中调用readline()方法读取一条动态信息并输出,另外还需要判断内容是否已经读取完毕,如果读取完毕应用break语句跳出循环,代码如下:

 1 print("\n","="*35,"蚂蚁庄园动态","="*35,"\n")
2 with open('message.txt','r') as file: #打开文件
3 number = 0 #记录行号
4 while True:
5 number += 1
6 line = file.readline()
7 if line =='': #最后的结尾为空''
8 break #跳出循环
9 print(number,line,end = "\n") #输出行号 每行内容 换行
10 print("\n","="*39,"over","="*39,"\n")

(2)运行结果如下:

5、实例05:遍历指定目录

(1)在IDLE中创建一个名称为walk_list.py的文件,首先在该文件中导入os模块,并定义要遍历的根目录,然后应用for循环遍历该目录,最后循环输出遍历到文件和子目录,代码如下:

1 import os                                           #导入os模块
2 path = "D:\\test program" #按电脑实际文件夹情况输入要遍历的根目录
3 print("【",path,"】目录下包括的文件和目录:")
4 for root,dirs,files in os.walk(path,topdown = True):#遍历指定目录 root根目录 dirs子目录 files文件
5 for name in dirs: #循环输出遍历到的子目录
6 print("●",os.path.join(root,name))
7 for name in files: #循环输出遍历到的文件
8 print("◎",os.path.join(root,name))

(2)运行结果如下:(具体显示内容将根据使用者的具体目录结构而定)

6、实例06:获取文件基本信息

(1)在IDLE中创建一个名称为fileinfo.py的文件,首先在该文件中导入os模块,然后调用os模块的stat()函数获取文件的基本信息,最后输出文件的基本信息,代码如下:

1 import os
2 fileinfo = os.stat("mr.jpg") #获取文件的基本信息
3 print("文件完整路径:",os.path.abspath("mr.jpg")) #获取文件的完整数路径
4 print("索引号:",fileinfo.st_ino) #输出文件的基本信息
5 print("设备名:",fileinfo.st_dev)
6 print("文件大小:",fileinfo.st_size,"字节")
7 print("最后一次访问时间:",fileinfo.st_atime)
8 print("最后一次修改时间",fileinfo.st_mtime)
9 print("最后一次状态变化时间:",fileinfo.st_ctime)

(2)运行结果如下:

(3)由于上面显示的结果中的时间和字节数都是一长串的整数(长时间:系统内部的时间),与我们平时见到的有所不同,所以一般情况下,为了让显示更加直观,还需要对这样的数值进行格式化。可以在修改版中编写两个函数,一个用于格式化时间,另一个用于格式化代表文件大小的字节数。修改后的代码如下:

(4)运行结果如下:

7、实战01:根据当前时间创建文件

(1)在IDLE中创建一个名称为weathereport.py的文件,然后在指定目录中,批量创建文件,文件名为%Y %m %d %H %M %S格式的当前时间(精确到秒),为了防止出现重名的文件,在没创建一个文件后,让线程休眠一秒,代码如下:

(2)运行结果如下:

8、实战02:批量添加文件夹

(1)在IDLE中创建一个名称为weathereport.py的文件,然后在指定的目录中,批量创建指定个数的文件夹(即目录),代码如下:

1 import os
2 a = int(input("请输入需要生成的文件夹个数:"))
3 path = "D:\\test program" #设置创建新文件夹的位置
4 for i in range(1,a+1): #循环创建
5 if not os.path.exists(path + str(i)): #判断文件夹是否存在(路径+str(i)代指新文件夹名)
6 os.mkdir(path + str(i)) #创建文件夹
7 print("文件夹"+str(i)+"创建成功!")
8 else:
9 print("该目录已经存在!")

(2)运行结果如下:

Python实验报告(第10章)的更多相关文章

  1. Python实验报告——第4章 序列的应用

    实验报告 [实验目的] 1.掌握python中序列及序列的常用操作. 2.根据实际需要选择使用合适的序列类型. [实验条件] 1.PC机或者远程编程环境. [实验内容] 1.完成第四章 序列的应用 实 ...

  2. Python实验报告——第3章 流程控制语句

    实验报告 [实验目的] 1.掌握python中流程控制语句的使用,并能够应用到实际开发中. [实验条件] 1.PC机或者远程编程环境 [实验内容] 1.完成第三章流程控制语句实例01-09,实战一到实 ...

  3. Python实验报告——第2章 Python语言基础

    实验报告 [实验目的] 1.熟悉在线编程平台. 2.掌握基本的 python 程序编写.编译与运行程序的方法. [实验条件] 1.PC机或者远程编程环境 [实验内容] 1.完成第二章实例01-07,实 ...

  4. python实验报告(第五周)

    一.实验目的和要求 学会使用字符串的常用操作方法和正确应用正则表达式. 二.实验环境 软件版本:Python 3.10 64_bit 三.实验过程 1.实例1:使用字符串拼接输出一个关于程序员的笑话 ...

  5. Python实验报告(第四周

    一.实验目的和要求 学会应用列表.元组.字典等序列: 二.实验环境 软件版本:Python 3.10 64_bit 三.实验过程 1.实例1:输出每日一贴 (1)在IDLE中创建一个名称为tips.p ...

  6. Python 实验报告(第三周)

    一.实验目的和要求 1.熟练运用常见选择结构: 2.熟练运用for循环和while循环: 3.理解带else语句的循环结构执行过程和break.continue语句在循环中的作用. 二.实验环境 软件 ...

  7. 2017-2018-2 20165315 实验四《Android程序设计》实验报告

    2017-2018-2 20165315 实验四<Android程序设计>实验报告 第24章:初识Android Android Studio项目的目录树 1 build:该目录包含了自动 ...

  8. Python程序设计实验报告一:熟悉IDLE和在线编程平台

    安徽工程大学 Python程序设计 实验报告 班级   物流191   姓名  崔攀  学号3190505136 成绩_____           日期     2020.3.8     指导老师  ...

  9. Python程序设计实验报告四:循环结构程序设计(设计型实验)

    安徽工程大学 Python程序设计 实验报告 班级   物流191   姓名  姚彩琴  学号3190505129 成绩 日期     2020.4.8     指导老师       修宇 [实验名称 ...

  10. Python程序设计实验报告三:分支结构程序设计

    安徽工程大学 Python程序设计 实验报告 班级   物流191   姓名  姚彩琴  学号3190505129 成绩 日期     2020.4.5     指导老师       修宇 [实验目的 ...

随机推荐

  1. 微信小程序开发优化

    一.开发优化一 1.使用Vant Weapp 1.1 什么是Vant Weapp Vant Weapp官网链接 Vant Weapp是有赞前端团队开源的一套小程序UI组件库,助力开发者快速搭建小程序应 ...

  2. 关于AWS-IAM-certificate-证书的说明

    AWS提供了证书管理的服务,可以使用IAM和ACM(位于Security & Identity IAM下的Certificate Manager)进行管理 在CloudFront和ALB中都可 ...

  3. Jmeter——BeanShell 内置变量vars、props、prev的使用

    在使用Jmeter过程中,或多或少都会接触些BeanShell,它会使工具的使用,变得更灵活. Jmeter中关于BeanShell的有: 1.BeanShell Sampler 取样器:完成Bean ...

  4. vue实现功能 单选 取消单选 全选 取消全选

    vue实现功能 单选 取消单选 全选 取消全选 代码部分 <template> <div class=""> <h1>全选框</h1> ...

  5. 【linux】 第1回 linux运维基础

    目录 1. 运维的本质 2. 电脑与服务器 2.1 电脑的种类 2.2 服务器种类 2.3 服务器品牌 2.4 服务器尺寸 2.5 服务器内部组成 3. 磁盘阵列 4. 系统简介 5. 虚拟化 6. ...

  6. 16.MongoDB系列之分片管理

    1. 查看当前状态 1.1 查看配置信息 mongos> use config // 查看分片 mongos> db.shards.find() { "_id" : & ...

  7. 面向对象day02,作业学生类,电脑类

    学生类,电脑类,测试类 学生类:解释都写在注释里面 public class Student { public String name; public int id; public char gend ...

  8. centos7 安装RabbitMQ3.6.15 以及各种报错

    成功图镇楼 各个版本之间的差异不大,安装前要确保rabbitmq 的版本和 elang的版本一致.预防各种错乱. 注意点:(重要!!重要!!) * 同时安装的时候最好确保rabbitmq和erlang ...

  9. Java函数式编程:一、函数式接口,lambda表达式和方法引用

    Java函数式编程 什么是函数式编程 通过整合现有代码来产生新的功能,而不是从零开始编写所有内容,由此我们会得到更加可靠的代码,并获得更高的效率 我们可以这样理解:面向对象编程抽象数据,函数式编程抽象 ...

  10. web3.0、比特币、区块链、元宇宙,以及那些待收割的韭菜们!

    前几天看到周星驰在社交账号上招聘web3.0的人才,感觉有必要说说web3.0,当然不是基于技术层面,而是从另一个维度说说web3.0以及其它相关的概念,从而做到如何反欺诈,如何避免被资本割韭菜.想到 ...