对常用的os模块做说明,方便以后自己查阅:
os.name: 显示你正在使用的工作平台 windows是nt,linux是posi
os.getcwd: 得到当前的工作目录
os.getenv: 读取环境变量
os.putenv: 设置环境变量
os.listdir: 返回指定目录下的所有文件和目录名,返回的是一个list
os.remove: 删除一个文件
os.stat: 获取文件属性
os.chmod: 修改文件属性和时间戳
os.mkdir: 创建目录
os.rmdir: 删除目录
os.removedir(): 删除多个目录
os.exit: 终止当前进程
os.path.split: 返回一个路径的目录名和文件名
os.path.isfile 校验给出的路径是否是文件
os.path.isdir: 校验给出的路径是否是目录
os.path.exists: 校验给出的路径是否存在
os.listdir: 列出目录下的目录和文件
os.curdir: 返回当前目录
os.path.getsize:获取文件大小,如果是目录则返回OL
os.path.abspath:获取绝对路径
os.path.isabs: 判断是否为绝对路径
os.path.splitext分离文件名和拓展名
os.path.basename返回文件名
os.path.dirname:返回文件路
#案例一,统计当前目录下文件类型和目录的数量
all_files = os.listdir(os.curdir) #获取当前路径下的文件,listdir会返回列表,中是目录下文件和目录
type_dic = dict()
for each_file in all_files:
if os.path.isdir(each_file): #isdir 判断是否为目录,返回True or False
type_dic.setdefault('文件夹',0) #setdeault 不存在该键则添加改键,值到字典中
type_dic['文件夹'] +=1
else:
ext = os.path.splitext(each_file)[1] #获splitext 会把文件分离返回文件名+后缀的元组
# print(type(ext))
type_dic.setdefault(ext,0)
type_dic[ext] += 1
for each_type in type_dic:
print('该文件夹下的类型为{}的文件{}个'.format(each_type,type_dic[each_type]))
'''
统计当前目录下每个文件的大小
'''
all_files = os.listdir(os.curdir) #获取当前目录下的所有文件和目录
totals = dict() #定义字典来储存信息
for each_file in all_files:
if os.path.isfile(each_file): #判断是否为文件
totals[each_file] = os.path.getsize(each_file) #获取大小信息写入字典
#打印字典
for k ,v in totals.items():
print('文件{}的大小是{}'.format(k,v))
'''
编写一个程序,用户输入文件名以及开始搜索的路径后,搜索该文件是否存在,
如果遇到文件夹,则进入该文件夹继续搜索
'''
target_directory = input('请输入要搜索的目录')
target_file = input('请输入要搜索的文件')
def search(target_directory,target_file):
os.chdir(target_directory) #进入目录
for each_file in os.listdir(os.curdir): #判断目录是文件还是目录,是文件则进行比较
if os.path.isfile(each_file):
if each_file == target_file:
print(os.getcwd() + '\\' + each_file)
elif os.path.isdir(each_file): #是目录则递归调用该函数:这里递归调用很精髓
search(each_file,target_file)
os.chdir(os.pardir) #每一个目录搜索完成要返回上一级目录,直至遍历整个目录
'''
对上面的场景进行加深,如果用户输入的文件名是模糊的,举例:用户要搜索文件名中包含te的文件名,那么test.txt 和text.txt都应该被检索出来
'''
search(target_directory,target_file)
target_file = input('请输入要搜索的文件: ')
target_dire = input ('请输入要搜索的目录: ')
def search(target_file,target_dire):
os.chdir(target_dire)
for each_file in os.listdir(os.curdir): #这里使用in
if os.path.isfile(each_file):
if target_file in each_file:
print(os.getcwd() + '\\' + each_file)
elif os.path.isdir(each_file):
search(target_file,each_file)
os.chdir(os.pardir)
'''
针对上题目,再进行加深:把搜到的结果进行持久化,存入文件中
'''
target_file = input('请输入要搜索的文件: ')
target_dire = input ('请输入要搜索的目录: ')
results = list()
def search(target_file,target_dire):
os.chdir(target_dire)
for each_file in os.listdir(os.curdir):
if os.path.isfile(each_file):
if target_file in each_file:
var = os.getcwd() + '\\' + each_file
results.append(var)
elif os.path.isdir(each_file):
search(target_file,each_file)
os.chdir(os.pardir)
return results
rd = search(target_file,target_dire)
f = open(os.getcwd() + '\\' + 'backup.txt','wb')
f.write('\n'.join(rd).encode('utf-8')) #这里join来以指定的分隔符来连接字符串,列表,元组中的每一个元素
f.close()