Python语言关于文件操作

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/qq_27717921/article/details/52999769

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 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券