Python语言关于文件操作

江山如此多娇,我却如此暴躁~~~

OK,奋斗

现在的楼楼学了点什么就想搬上来,这样等牙齿掉光光回头看的时候会觉得很充实吧!!睡觉

Python的文件系统,按照目前理解的来写,不愿做代码的搬运工

写列出几个python的题目来,嘻嘻

1,输入:某一个路径

                 在当前路径下查找的文件名

      输出:待查找文件的完整路径

2,统计当前目录下每个文件类型的文件数

3,输入:查找范围

                 查找文件的类型按照文件类型统计每种类型文件的大小并写入当前路径下的.txt的文档中

题目写好啦,然后总结一下Python中用到的方法吧,只写了三个问题中涉及到的方法

像java中导入包操作一样,在使用Python中已经定义好的方法之前首先也要导入包,才能识别方法。这里主要有用到包os,和子包os.path两个。

os.getcwd()返回的是当前.py文件的路径,系统默认所有的当前路径都是从.py文件所处的位置出发的,也就是说.py文件的位置就像是坐标轴的原点一样

os.chdir(path)改变当前的路径,将当前路径改为path,也就是说一旦执行了这一操作,然后如果在运行os.getcwd()的话返回的路径为path,其实这个时候文件系统的视角就已经变为path了。

os.listdir(文件夹)参数是一个路径当然是一个夹啦,列出这个目录下所有的子目录

os.curdir,注意这不是一个方法,如果打印os.curdir则是个".",指的是当前目录

os.pardir,打印这个的话是个".."指的是上一级目录

os.sep,打印的话是"\\",必要的是可以组合形成一个路径格式的

os.path下进行调用的方法

os.path.splitext(path)对于文件来讲将文件名称和后缀名分离,并以(file_name,file_extention)二元组的形式返回

os.path.getsize(file)返回文件的大小,按照KB来

os.path.isdir(path)判断指定路径是否存在且是一个目录

os.path.isfile(path)判断指定路径是否存在且是一个文件

基本上就用到这些方法,这些方法在python中的文件操作中涉及的比较多,上代码,辛苦码的奋斗

题目一:写了两种方法,不过也是大同小异

import os
def search_file():
       filepath = input("请输入待查找的初始目录:")
       filename = input("请输入需要查找的目标文件:")
       find_file_a(filepath,filename)

def find_file_a(filepath,filename):
       cur_path = filepath
       for file in os.listdir(cur_path):
              print(cur_path+os.sep+file)
              if os.path.isdir(cur_path+os.sep+file):
                     list_f = os.listdir(cur_path+os.sep+file)
                     find_file_a(cur_path+os.sep+file,filename)
              else:
                     if file ==filename:
                            print(cur_path+os.sep+file)
                            return
                     else:
                            continue


def find_file_b(filepath,filename):
       os.chdir(filepath)
       for file in os.listdir(os.path.curdir):
              if os.path.isdir(file):
                     list_f = os.listdir(file)
                     find_file(file,filename)
                     os.chdir(os.pardir)
              else:
                     if file == filename:
                            print(os.getcwd()+os.sep+file)
                            return
                     else:
                            continue
search_file()

题目2:

import os
def search_filetype1(filepath):
       file_dict ={}
       list_file =[]
       file = os.listdir(filepath)
       for file_n in file:
              (file_name,file_extention)= os.path.splitext(file_n)
              print(file_extention)
              list_file.append(file_extention)
       file_dict = {}.fromkeys(list_file,0)
       for file_n in file:
              (file_name,file_extention)= os.path.splitext(file_n)
              count = file_dict.get(file_extention)
              count+=1
              file_dict.update({file_extention:count})
       for key,count in file_dict.items():
              print('该文件夹下共有类型为[.%s]的文件%s个'%(key,count))


def search_filetype2(filepath):
       file_dict={}
       file = os.listdir(filepath)
       for file_n in file:
              (file_name,file_extention)=os.path.splistext(file_n)
              if file_dict.get(file_extention,-1)==-1:
                     file_dict.update({file_extention:1})
              else:
                     count = file_dict.get(file_extention)
                     count+=1
                     file_dict.update({file_extention:count})


       for key,count in file_dict.items():
              print('该文件夹下共有类型为[%s]的文件%s个'%(key,count))

def search_filetype3(filepath):
       file_dict={}
       file = os.listdir(filepath)
       count = 0
       for file_n in file:
              (file_name,file_extention)=os.path.splistext(file_n)
              file_dict.setdefault(file_extention,count+1)

       for key,count in file_dict.items():
              print('该文件夹下共有类型为[%s]的文件%s个'%(key,count))


search_filetype2('E:\\jiajia\\test')

                     

题目三:

import os
filesize = {}
def cal_file_size():
       filepath = input('请输入查找的文件路径范围:')
       filetype = input('请输入查找文件的类型:')
       typelist = []
       #filesize={}
       while filetype!='#':
              typelist.append(filetype)
              filetype = input('请输入查找文件的类型:')


       #filesize = search_file_size_b(filepath,typelist)
       search_file_size_a(filepath,typelist,filesize)
       print(len(filesize))
       save_file(filesize)





       
def search_file_size_b(filepath,typelist):
       
       os.chdir(filepath)
       for filename in os.listdir(os.path.curdir):
              if os.path.isdir(filename):
                     filesize.update(search_file_size_b(filename,typelist))
                     os.chdir(os.pardir)

              else:
                     
                     (name,extend) = os.path.splitext(filename)
                     if extend in typelist:
                            
                            c_size =os.path.getsize(filename)
                            s_size = c_size+filesize.get(extend,0)
                            print(s_size)
                            filesize.setdefault(extend,s_size)
                            


       return filesize
                                  
def search_file_size_a(filepath,typelist,filesize):
       #filesize = {}
       os.chdir(filepath)
       for filename in os.listdir(os.path.curdir):
              if os.path.isdir(filename):
                     search_file_size_a(filename,typelist,filesize)
                     os.chdir(os.pardir)

              else:
                     (name,extend) = os.path.splitext(filename)
                     if extend in typelist:
                            c_size =os.path.getsize(filename)
                            s_size = c_size+filesize.get(extend,0)
                            filesize.setdefault(extend,s_size)




def save_file(filesize):
       file_size = open('file_size.txt','w')
       for key,value in filesize.items():
              file_size.writelines(key+'----'+str(value))
       #file_size.writelines(filesize)
       file_size.close()
       
              
                     
                     
cal_file_size()   





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值