实验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)运行结果如下:

 

 

 

posted on 2022-11-03 22:25  Mandeluda  阅读(192)  评论(0编辑  收藏  举报