yoyo2 发表于 2020-8-22 16:49:46

python基础第30讲文件系统动动手

本帖最后由 yoyo2 于 2020-8-23 18:49 编辑

费时2天,为啥花这么久?(害)
做不出题目很不开心,一不开心就想刷手机,一刷手机时间就过得好快,一不小心就过去2天了
最后当然还是自己写完会的,不会的部分参考答案咯
终于可以继续看下一课了,效率奇慢

'''
0. 编写一个程序,统计当前目录下每个文件类型的文件数
#遇到问题:文件夹没有打印,加上os.chdir('D:\\workspace\\test')就解决了

import os

file = os.listdir('D:\\workspace\\test')
os.chdir('D:\\workspace\\test')
file_list = {}

for each_file in file:   
    if os.path.isdir(each_file):   #判断是不是文件夹
      file_list.setdefault('文件夹', 0)   #setdefault(key, default=None, /)方法,dict实例,如果键不在字典中,则插入一个默认值的键。
      file_list['文件夹'] += 1
    else:
      f_name,f_extension = os.path.splitext(each_file)#获得拓展名
      file_list.setdefault(f_extension, 0)
      file_list += 1
for i in file_list:
    print("该文件夹下共有类型为【%s】的文件 %d 个" % (i , file_list))   #这里(i , file_list)不加括号不行
'''
#######################################
'''
1. 编写一个程序,计算当前文件夹下所有文件的大小。
#遇到问题:只识别了1.txt其他都没有打印,加了os.chdir('D:\\workspace\\test')后就没了,也就是os.path.isfile()需要绝对路径,或者更改工作目录

import os
path = 'D:\\workspace\\test'
os.chdir(path)#改变工作目录
file_list = os.listdir(path)

for each_file in file_list:
    if os.path.isfile(each_file):
      size = os.path.getsize(each_file)
      print(each_file,'【%d Bytes】' % size)
'''
########################################
'''
2. 编写一个程序,用户输入文件名以及开始搜索的路径,搜索该文件是否存在。如遇到文件夹,则进入文件夹继续搜索
'''
'''
#原版程序
#问题:输出没有达到题目要求
import os

search_path = input("请输入待查找的初始目录:")
search_file = input("请输入需要查找的目标文件:")

if os.path.isabs(search_path):   #检查是不是绝对路径
    tuple_file = os.walk(search_path)
    list_file =
    for j in range(len(list_file)):
      if search_file in list_file:
            path = str(list_file) + str(list_file)
            print(path,search_file)
'''
'''
参考答案代码

import os
def search_file(start_dir, target):
    os.chdir(start_dir)#改变工作目录

    for each_file in os.listdir(os.curdir):#获得当前目录文件
      if each_file == target:#文件查找
            print(os.getcwd() + os.sep + each_file)#打印结果,注:os.getcwd()返回当前目录、os.sep输出操作系统特定的路径操作符

      if os.path.isdir(each_file):
            search_file(each_file, target) #递归调用查找
            os.chdir(os.pardir) #os.pardir返回上一级目录

start_dir = input("请输入待查找的初始目录:")
target = input("请输入需要查找的目标文件:")
search_file(start_dir,target)
'''

#########################################
'''
3. 编写一个程序,用户输入开始搜索的路径,查找该路径下(包含子文件夹内)所有的视频格式文件
(要求查找mp4 rmvb, avi的格式即可),并创建一个文件(vedioList.txt)存放所有找到的文件的路径
'''
import os

def search_video(start_dir):
    os.chdir(start_dir)#切换至初始目录
    list_video = ['.mp4', '.rmvb','.avi']

    for each_file in os.listdir(start_dir):
      if os.path.splitext(each_file) in list_video:#检查是否视频文件
            f = open('D:\\workspace\\test\\vedioList.txt','a')#创建文件实例
            f.write(os.getcwd() + os.sep + each_file + '\n')#写入文件
            f.close()
      if os.path.isdir(each_file):
            search_video(os.path.join(start_dir, each_file))#递归查找
            os.chdir(os.pardir)#返回上一级目录

start_dir = input("请输入待查找的初始目录:")
search_video(start_dir)   



阿法国 发表于 2020-8-22 19:37:17

xiao-wugui 发表于 2020-8-22 19:39:52

666666666666666666666666666{:10_275:}
页: [1]
查看完整版本: python基础第30讲文件系统动动手