前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python语言关于文件操作

Python语言关于文件操作

作者头像
张凝可
发布2019-08-22 16:08:03
4400
发布2019-08-22 16:08:03
举报
文章被收录于专栏:技术圈技术圈

版权声明:本文为博主原创文章,遵循 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中的文件操作中涉及的比较多,上代码,辛苦码的

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

代码语言:javascript
复制
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:

代码语言:javascript
复制
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')

题目三:

代码语言:javascript
复制
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()   
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016年11月01日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档