第30讲:文件系统:介绍一个高大上的东西
来源:互联网 发布:执行偏差算法含义 编辑:程序博客网 时间:2024/05/16 05:54
动动手:
0.编写一个程序,统计当前目录下每个类型的文件数,程序实现如图:
答案:
import osprint('当前文件夹为:%s' % os.getcwd())all_files = os.listdir(os.curdir) #listdir()-列举指定目录中的文件名,使用os.curdir指代当前目录type_dict = dict() #创建一个字典for each_file in all_files: if os.path.isdir(each_file): #isdir判断指定路径是否存在且是一个目录 type_dict.setdefault('文件夹', 0) #?这里不明白为什么每次循环不会初始化字典的值,而且还会做累加。 type_dict['文件夹'] += 1 else: ext = os.path.splitext(each_file)[1] #这里的分割是带点的,如:.txt type_dict.setdefault(ext, 0) type_dict[ext] += 1for each_type in type_dict.keys(): print('该文件夹下共有类型为【%s】的文件 %d 个' % (each_type, type_dict[each_type]))
1.编写一个程序,计算当前文件夹下所有文件的大小,程序实现如图:
答案:
import osall_files = os.listdir(os.curdir)file_dict = dict()for each_file in all_files: if os.path.isfile(each_file): file_size = os.path.getsize(each_file) file_dict[each_file] = file_size #相当于file_dict = {each_line:file_size} for each in file_dict.items(): print('%s【%dBytes】' % (each[0], each[1]))
2.编写一个程序,用户输入文件名以及开始搜索的路径,搜索该文件是否存在。如遇到文件夹,则进入文件夹继续搜索,程序实现如图:
答案:
import osdef 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) #getcwd()返回当前目录||os.sep输出操作系统特定的路径分隔符(win下为'\\',linux下为'/') if os.path.isdir(each_file): search_file(each_file, target) #递归调用 os.chdir(os.pardir) #指代上一级目录('..')start_dir = input('请输入待查找的初始目录:')target = input('请输入需要查找的目标文件:')search_file(start_dir, target)
3.编写一个程序,用户输入开始搜索的路径,查找该路径下(包含子文件夹内)所有的视频格式文件(要求查找mp4,rmvb,avi的格式即可),并把创建一个文件(vedioList.txt)存放所有找到的文件的路径,程序实现如图:
答案:
import osdef search_file(start_dir, target): os.chdir(start_dir) for each_file in os.listdir(os.curdir): ext = os.path.splitext(each_file)[1] if ext in target: vedio_list.append(os.getcwd() + os.sep + each_file + os.linesep) if os.path.isdir(each_file): search_file(each_file, target) #递归调用 os.chdir(os.pardir) #递归调用后切记返回上一层目录start_dir = input('请输入待查找的初始目录:')program_dir = os.getcwd()target = ['.mp4', '.avi', '.rmvb']vedio_list = []search_file(start_dir, target)f = open(program_dir + os.sep + 'vedioList.txt', 'w') #在当前目录打开'vedioList.txt'f.writelines(vedio_list)f.close()
4.编写一个程序,用户输入关键字,查找当前文件夹内(如果当前文件夹内包含文件夹,则进入文件夹继续搜索)所有含有该关键字的文本文件(.txt后缀),要求显示该文件所在的位置以及关键字在文件中的具体位置(第几行第几个字符),程序实现如图:
答案:
待填坑……
Notes:
1.这讲主要讲了:http://bbs.fishc.com/forum.php?mod=viewthread&tid=45512&extra=page%3D1%26filter%3Dtypeid%26typeid%3D403 这个链接里的内容。2.os模块
>>> os.chdir('E:\\') #要切换目录时,要带双引号,\\等于/>>> os.getcwd()'E:\\'>>> os.mkdir('E:\\A\\B') #要有A之后才能创建B>>> os.removedirs("E:/A/B/C") 递归删除目录,从子目录到父目录逐层尝试删除,遇到目录非空则停止删除,不抛出错误。>>> os.removedirs("E:/A/B") #要先给出最内层的目录>>> os.system('calc') #打开计算器
other:
>>> os.listdir(os.curdir)>>> os.listdir(os.pardir)
3.os.path模块
注意basename(path)、dirname(path)、join()、split()、splitext()方法是对路径进行操作(其实就是对你输入的路径字符串进行操作),不是去访问该路径下的文件;getsize()、getatime()、getctime()、getmtime()才是对路径文件进行操作。
引用时需要有os.path,比如:os.path.basename('E:/a/b/123.txt')
>>> os.path.join('C:/', 'b', 'c', 'd') #join-将path1,path2各部分组合成一个路径名'C:/b\\c\\d'>>> os.path.split("E:/A/B/C") #split类似于字符串的split,分割文件名和路径,返回一个元组。就如例子中的'C',假设是一个目录,但是返回时还是当作一个文件进行分割。('E:/A/B', 'C')os.path.getatime(file)-返回指定文件最近的访问时间(浮点型秒数,可用time模块的gmtime()或localtime()函数进行换算,gmtime()是国际标准时)>>> os.path.getatime('E:/something.txt')1503312884.3365867 #浮点型秒数>>> import time>>> time.localtime(os.path.getatime("E:/something.txt")) #这里是本地时间time.struct_time(tm_year=2017, tm_mon=8, tm_mday=21, tm_hour=18, tm_min=54, tm_sec=44, tm_wday=0, tm_yday=233, tm_isdst=0)https://zhidao.baidu.com/question/54621865.html #相对路径和绝对路径的区别islink(path)-判断指定路径是否存在且是一个符号链接,符号链接就是快捷方式>>> os.path.ismount('E:/') #判定指定路径是否是挂载点,挂载点就是指'A:/'或'C:/'或'D:/'True
阅读全文
0 0
- 第30讲:文件系统:介绍一个高大上的东西
- FishC笔记—30 讲 文件系统,介绍一个高大上的东西
- 030:文件系统,介绍一个高大上的东西
- 14.文件系统:高大上的东西——import关键字/模块
- 如何设计一个“高大上”的 logo
- 也来一个高大上的界面
- 一个高大上的Log工具
- 如何配置一个高大上的AndroidStudio
- 一个“高大上”的CSS3登入表单
- 一个高大上的SharedPreferences工具类——XPrefs
- 讲一个逗比的东西
- 碾压「中国素质教育」,STEM 是个怎样高大上的东西?
- “高大上”的位运算
- 高大上的链路层简介
- 又一次高大上的培训!
- 我的高大上专有名词
- 高大上
- 老大写得一个很高大上的Makefile,包含很多语法:
- (转)Java和JS中String、数组长度的求法
- 第三十五天
- 融会贯通——深入了解面向对象设计原则“依赖倒转原则”
- 百度编辑器实例化,相当于from表单中的内容,直接post到后台
- Page Object设计模式
- 第30讲:文件系统:介绍一个高大上的东西
- delete delete[]
- 埃氏筛法与欧拉筛法
- 用R语言计算班级各门课程的加权平均分
- Floyd algorithm原理及使用
- 后缀表达式计算
- BZOJ 2844 异或线性基(HDU3949 升级版
- 【爬虫】用 urllib.request 解析网页
- poj 3253