python之os模块

对常用的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()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值