|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
原帖地址:https://fishc.com.cn/thread-45649-1-1.html
本讲有关文件系统的操作编程,动动手共5道题目,如下是题目简述与小古比鱼编写的程序,感觉比小甲鱼老师提供的参考答案更简洁、更优雅!望各位鱼友走过路过,留下宝贵意见,共同交流进步!
0. 文件类型统计(统计当前目录下每个文件类型的文件数)
- import os
- ext = [os.path.splitext(file)[1] for file in os.listdir()] # 将当前目录下各文件的扩展名存入列表ext
- files = set(ext) # 将ext去重后转换为集合files(文件类型)
- for type in files:
- print(f"该文件夹下共有类型为【{type if type else '文件夹'}】的文件",ext.count(type),'个') # 使用f-字符串输出
复制代码
1. 文件大小统计(统计当前文件夹下所有文件的大小)
- import os
- for file in os.listdir():
- print(file,f'【{os.path.getsize(file)}Bytes】')
复制代码
2. 文件查找(用户输入文件名以及开始搜索的路径,搜索该文件是否存在)
- import os
- path = input('请输入待查找的初始目录:')
- file = input('请输入需要查找的目标文件:')
- found = False
- for each in os.walk(path):
- if file in each[2]:
- print(os.path.join(each[0],file))
- found = True
- if not found:
- print('未查找到相关文件!')
复制代码
3. 视频查找(查找用户输入的路径下所有mp4、rmvb、avi格式的视频文件,将路径保存在文件“vedioList.txt”中)
- import os
- path = input('请输入待查找的初始目录:')
- found = []
- for each in os.walk(path):
- for file in each[2]:
- if file.endswith(('.mp4','.rmvb','.avi')):
- found.append(os.path.join(each[0],file))
- if found:
- f = open('vedioList_Guppy.txt','w')
- f.writelines('\n'.join(found))
- f.close()
- else:
- print('未查找到相关文件!')
复制代码
4. 文本关键字查找(查找当前文件夹内所有含有用户输入的关键字的文本文件,附带显示关键字具体位置的功能)
- import os
- import chardet
- def check_charset(file): # 函数check_charset()用于检测文本文件file的编码方式并返回
- with open(file,'rb') as f:
- data = f.read(4)
- charset = chardet.detect(data)['encoding']
- return 'gbk' if charset == 'ISO-8859-1' else 'utf-8'
- key = input('请将该脚本放于待查找的文件夹内,请输入关键字:')
- loc = input(f'请问是否需要打印关键字【{key}】在文件中的具体位置(YES/NO):') in ('YES','Yes','yes')
- found = False
- for each in os.walk('.'):
- for file in each[2]:
- if file.endswith('.txt'):
- path = os.path.join(each[0],file)
- f = open(path,encoding=check_charset(path))
- str = f.read()
- f.close()
- if key in str:
- print('==================================================================')
- print(f'在文件【{path}】中找到关键字【{key}】')
- found = True
- if loc:
- list = str.split('\n')
- for line in range(len(list)):
- index = []
- start = 0
- while list[line].find(key,start) >= 0:
- index.append(list[line].find(key,start)+1)
- start = index[-1]
- if index:
- print(f'关键字出现在第 {line+1} 行,第 {index} 个位置。')
- if not found:
- print(f'未找到含关键字【{key}】的文件!')
复制代码 |
|