Python 小甲鱼教程 课后练习30

来源:互联网 发布:淘宝退款成功没收到钱 编辑:程序博客网 时间:2024/04/27 20:24

第一题的要求是统计当前目录下面,文件的种类并标出数量



代码如下:

import os
mulu=os.listdir(os.curdir)
type_kind={}
for i in mulu:
 if os.path.isdir(i):        #这里要把文件夹选项和其他的文件类型分开,因为文件夹是没有后缀的!!!
  type_kind.setdefault('folder',0)
  type_kind['folder']+=1
 else:
  ext=os.path.splitext(i)[1]          #这里要用splitext哦,本来还想着用split('.'),其实完全可以用os.path的命令来做
  type_kind.setdefault(ext,0)
  type_kind[ext]+=1
  
for key in type_kind:     #这里我本来用enumerate功能,但是结果出来数字是01234,这是错的,因为enumerate显示的是下标!!!不是key映射的value值!!
 print ('under this folder there are %s files %s pcs'%(key,type_kind[key]))


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

第二题是:

统计当前目录下的文件的大小



代码如下:

import os
mulu=os.listdir(os.curdir)
size={}
for i in mulu:
 if os.path.isfile(i):          #这里用isfile来检测是否是文件,如果文件夹的话就直接剔除了。
  filesize=os.path.getsize(i)     #getsize函数,用来获取文件大小
  size[i]=filesize                       #添加键和值进去
for key in size:
 print (key,size[key],'bytes')

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

第二题是创建一个简单搜索引擎,要求如下,代码如下



这道题目完全不会啊。。。。看的答案敲的

import os
def search(source,target):
 os.chdir(source)                      #这句话相当于在后台把搜索开始的文件夹位置修改
 for i in os.listdir(os.curdir):
  if i==target:
   print (os.getcwd()+os.sep+i)  #getcwd是当前文件夹名,os.sep是当前操作系统的分隔符,记住,这里是文件在当前文件夹下面
   
  if os.path.isdir(i):            
   search(i,target)       #这里用到了递归.......不会用,但是能看懂
   os.chdir(os.pardir)
   
source=input('please enter the source folder name: ')
target=input('please enter the target file name: ')
search(source,target)


------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

下一题,要求搜索当前所有文件夹下面 规定后缀的文件,要求如下。







代码如下:

import os
content=[]
target=['.avi','.mp4','.rmvb']
def video(source,target):     #参数还是要选好,不然代码会写得很难看,本来写的是source和新建文件的名字,后来看答案还是source和目标后缀名比较好
 os.chdir(source)
 
 for i in os.listdir(os.curdir):
  ext=os.path.splitext(i)[1]
  if ext in target:
   content.append(os.path.abspath(i)+os.linesep)      #这句还可以写成os.getcwd()+os.sep+os.linesep,sep是当前操作系统的分隔符,linesep是当前操作系统换行符,                                                                                       # 如果不写linesep的话,下面videolist打印出来的结果不会自动换行
  if os.path.isdir(i):
   video(i,target)
   os.chdir(os.pardir)
source=input('please enter the initial directory: ')
video(source,target)
road=os.getcwd()   
f=open('videolist.txt','w')
for x in content:
 f.writelines(x)
f.close()



0 0