目录
一、实验目标
二、实验难点
三、实验内容
实验内容1:对D盘下某文件夹的所有文件和文件夹进行遍历,返回temp.txt文件对所有地址(递归和非递归方式实现)
实验内容2:对D盘下某文件夹的所有文件和文件夹进行遍历,要求输出创建日期在2022年9月1日到2022年11月1日之间的所有文件,输出这些文件的完整的路径名
掌握如何对文件夹以及文件进行操作
文件夹的递归访问
#递归方法
import os
from os import listdir
from os.path import join, isdir
def visitFile(directory):
for file in os.listdir(directory):
filename=join(directory,file)
if isdir(filename):
print(filename)
visitFile(filename)
else:
print(filename)
visitFile(r"D:\1")
#非递归方法
import os
from os import listdir
from os.path import join, isdir
def visitFile(directory):
dir_directory=[directory]
cur_directory=dir_directory.pop(0)
while isdir(cur_directory):
for file in os.listdir(cur_directory):
filename=join(cur_directory,file)
if isdir(filename):
dir_directory.append(filename)
print(filename)
else:
print(filename)
if len(dir_directory):
cur_directory=dir_directory.pop(0)
else:
return
visitFile(r"D:\1")
#由于今天是2022.11.2号,所以我创建文件的时间都是超出了问题所需的时间,因此没有任何输出
import os
from os import listdir,path
from os.path import join, isdir
def visitFile(directory):
for file in os.listdir(directory):
filename=join(directory,file)
if isdir(filename):
if datetime(2022,9,1,0,0,0).timestamp()<=path.getctime(r"D:\1")<=datetime(2022,10,31,23,59,59).timestamp():
print(filename)
visitFile(filename)
else:
if datetime(2022,9,1,0,0,0).timestamp()<=path.getctime(r"D:\1")<=datetime(2022,10,31,23,59,59).timestamp():
print(filename)
visitFile(r"D:\1")
#如果把范围增大,变成:要求输出创建日期在2022年9月1日到2022年12月1日之间的所有文件,输出这些文件的完整的路径名,那么就可以输出了
import os
from os import listdir,path
from os.path import join, isdir
def visitFile(directory):
for file in os.listdir(directory):
filename=join(directory,file)
if isdir(filename):
if datetime(2022,9,1,0,0,0).timestamp()<=path.getctime(r"D:\1")<=datetime(2022,11,30,23,59,59).timestamp():
print(filename)
visitFile(filename)
else:
if datetime(2022,9,1,0,0,0).timestamp()<=path.getctime(r"D:\1")<=datetime(2022,11,30,23,59,59).timestamp():
print(filename)
visitFile(r"D:\1")