实验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. C++面向对象编程之point-like classes的智能指针和迭代器、function-like classes即仿函数

    1.智能指针 智能指针里面包含其他指针的形式和 委托 感觉比较像; 智能指针一定都需要重载 * 和 -> 操作符 ; 这个符号它作用后还能再继续作用下去; 2.迭代器: 这里主要关注 * 和 - ...

  2. 记一次 .NET 某企业OA后端服务 卡死分析

    一:背景 1.讲故事 前段时间有位朋友微信找到我,说他生产机器上的 Console 服务看起来像是卡死了,也不生成日志,对方也收不到我的httpclient请求,不知道程序出现什么情况了,特来寻求帮助 ...

  3. KTV和泛型(3)

    泛型除了KTV,还有一个让人比较疑惑的玩意,而且它就是用来表达疑惑的:? 虽然通过泛型已经达到我们想要的效果了,例如: List<String> list = new ArrayList& ...

  4. IDEA插件MyBatisCodeHelper-Pro的破解与使用

    0.前言 本文中的IDEA版本是2020.3,使用的插件版本是MyBatisCodeHelper-Pro 2.8.9,3.0+版本目前没找到激活的方式 和本文插件类似的还有mybatisX,但我不喜欢 ...

  5. 基于win11安装Java11环境

    下载JDK解压版本 下载后解压,并放到一个没有中文路径的目录,如图所示: 配置Java环境变量 以Windows11系统为例,打开设置,搜索"环境",点击"编辑系统环境变 ...

  6. 使用dotnet-monitor sidecar模式 dump docker运行的dotnet程序.

    前情概要 随着容器和云技术的发展, 大量的应用运行在云上的容器中, 它们的好处是毋庸置疑的, 例如极大的提高了我们的研发部署速度, 快速的扩缩容等等, 但是也存在一些小小的问题, 例如难以调试. 基于 ...

  7. k8s运维之pod排错

    k8s运维之pod排错 K8S是一个开源的,用于管理云平台中多个主机上的容器化应用,Kubernetes的目标是让部署容器化变得简单并且高效 K8S的核心优势: 1,基于yaml文件实现容器的自动创建 ...

  8. 从小白到架构师(4): Feed 流系统实战

    「从小白到架构师」系列努力以浅显易懂.图文并茂的方式向各位读者朋友介绍 WEB 服务端从单体架构到今天的大型分布式系统.微服务架构的演进历程.读了三篇万字长文之后各位想必已经累了(主要是我写累了), ...

  9. 「浙江理工大学ACM入队200题系列」问题 A: 零基础学C/C++34—— 3个数比较大小(冒泡排序与选择排序算法)

    本题是浙江理工大学ACM入队200题第四套中的A题,同时给出了冒泡排序和选择排序算法 我们先来看一下这题的题面. 由于是比较靠前的题目,这里插一句.各位新ACMer朋友们,请一定要养成仔细耐心看题的习 ...

  10. 04 uniapp/微信小程序 项目day04

    一.加入购物车 1.1 购物车数量 先创建购物车git 这里的数据肯定要做全局数据,因为不能只在details这个页面去操作他,他到底有几个也是由购物车页面获取到的 所以需要vuex 创建store文 ...