马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 seasonpilot 于 2020-5-13 23:27 编辑
第三十课:文件系统:介绍一个高大上的东西
课后作业 第0题,请问为什么我统计文件夹数量时,不能输出‘文件夹’?‘类型为’后面里面是空白。如下:
该文件夹下共有类型为【】的文件 4 个
import os
all_files = os.listdir(os.curdir) # 使用os.curdir表示当前目录更标准
type_dict = dict() # 先定一个空字典来存放{'后缀名': 数量}
for each_file in all_files:
if os.path.isdir(each_file):
type_dict.setdefault('文件夹', 0) # 当原字典中无该键时,则新增该键和对于的值,并返回键值
type_dict['文件夹'] += 1
else:
ext = os.path.splitext(each_file)[1] # 返回的是元组,获取文件的后缀名=ext
type_dict.setdefault(ext, 0)
type_dict[ext] += 1
for each_type in type_dict.keys():
print('该文件夹下共有类型为【%s】的文件 %d 个' % (each_type, type_dict[each_type]))
课后作业 第1题 无法计算桌面内的文件大小,运行代码后没有 反应
import os
def file_size():
file_name = os.listdir(os.curdir)
dict1 = dict()
for each_file in file_name:
if os.path.isfile(each_file):
dict1.setdefault(each_file, os.path.getsize(each_file))
print('%s的大小为:【%d Bytes】' % (each_file, dict1[each_file]))
file_size()
课后作业 第2题 为什么“递归调用后切记返回上一层目录”?
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.sep使程序更标准
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题 第10行代码 为啥写成 if file_ext == '.mp4' or '.rmvb' or '.avi': 就是错的?
import os
vedio_list = []
def search_file(start_dir):
os.chdir(start_dir)
for each_file in os.listdir(os.curdir):
if os.path.isfile(each_file):
file_ext = os.path.splitext(each_file)[1]
if file_ext in ['.mp4', '.rmvb', '.avi']:
vedio_list.append(os.getcwd() + os.sep + each_file + os.linesep)
if os.path.isdir(each_file):
search_file(each_file) # 递归调用
os.chdir(os.pardir) # 递归调用后切记返回上一层目录
return vedio_list
start_dir = input('请输入待查找的初始目录:')
vedio_list = search_file(start_dir)
f = open(os.getcwd() + os.sep + 'VedioList.txt', 'w')
f.writelines(vedio_list)
f.close()
[b]课后作业 第4题 当前文件夹的文件可以打开,子目录下的文件打不开 是什么原因啊? 看了白度的方法,都没有解决。这个文件实际是有的
后面调试了几次,发现子目录名称改为非 ‘新建文件夹’ 的名称可以正常运行,但是改了文本文档名称就不能正常运行,再改回 ‘新建文本文档’ 就可以正常运行
[/b]
import os
def seach_keyword(keyword, count):
file = os.walk(os.curdir)
print('所有文件 %s 。' % file)
for i in file:
print('fafasfafsa', i)
for each_file in i[2]:
print('文件名字 【%s】 。' % each_file)
if os.path.splitext(each_file)[1] == '.txt':
f = open(each_file, 'r')
for each_line in f:
count += 1
if keyword in each_line:
pos = each_line.find(keyword)
print('关键字出现在第 %s 行,第 %s 个位置。' % (count, pos))
keyword = input('请输入关键字')
count = 0 # 计数器
seach_keyword(keyword, count)
运行打印如下:C:\Users\Administrator\AppData\Local\Programs\Python\Python38\python.exe "C:/Users/Administrator/Desktop/练习/代码练习/30 文件系统/4. 编写一个程序,用户输入关键字,查找当前文件夹内(如果当前文件夹内包含文件夹,则进入文件夹继续搜索)所有含有该关键字的文本文件(.txt后缀),要求显示该文件所在的位置以及关键字在文件中的具体位置(第几行第几个字符)/好极了.py"
请输入关键字f
所有文件 <generator object walk at 0x00000000021297B0> 。
fafasfafsa ('.', ['.idea', '232', '哈哈'], ['好极了.py', '新建文.txt', '新建文本文档.txt', '查找含有该关键字的文本文件 - 2.py', '查找含有该关键字的文本文件(参考答案).py', '查找含有该关键字的文本文件.py'])
文件名字 【好极了.py】 。
文件名字 【新建文.txt】 。
关键字出现在第 1 行,第 0 个位置。
关键字出现在第 2 行,第 0 个位置。
关键字出现在第 3 行,第 0 个位置。
关键字出现在第 4 行,第 0 个位置。
关键字出现在第 5 行,第 0 个位置。
关键字出现在第 6 行,第 0 个位置。
关键字出现在第 7 行,第 1 个位置。
关键字出现在第 9 行,第 0 个位置。
关键字出现在第 10 行,第 0 个位置。
关键字出现在第 11 行,第 0 个位置。
关键字出现在第 12 行,第 2 个位置。
关键字出现在第 14 行,第 0 个位置。
关键字出现在第 15 行,第 1 个位置。
关键字出现在第 16 行,第 0 个位置。
关键字出现在第 18 行,第 0 个位置。
文件名字 【新建文本文档.txt】 。
关键字出现在第 19 行,第 0 个位置。
关键字出现在第 20 行,第 0 个位置。
关键字出现在第 21 行,第 1 个位置。
关键字出现在第 23 行,第 0 个位置。
关键字出现在第 24 行,第 0 个位置。
关键字出现在第 25 行,第 0 个位置。
文件名字 【查找含有该关键字的文本文件 - 2.py】 。
文件名字 【查找含有该关键字的文本文件(参考答案).py】 。
文件名字 【查找含有该关键字的文本文件.py】 。
Traceback (most recent call last):
File "C:/Users/Administrator/Desktop/练习/代码练习/30 文件系统/4. 编写一个程序,用户输入关键字,查找当前文件夹内(如果当前文件夹内包含文件夹,则进入文件夹继续搜索)所有含有该关键字的文本文件(.txt后缀),要求显示该文件所在的位置以及关键字在文件中的具体位置(第几行第几个字符)/好极了.py", line 28, in <module>
seach_keyword(keyword, count)
File "C:/Users/Administrator/Desktop/练习/代码练习/30 文件系统/4. 编写一个程序,用户输入关键字,查找当前文件夹内(如果当前文件夹内包含文件夹,则进入文件夹继续搜索)所有含有该关键字的文本文件(.txt后缀),要求显示该文件所在的位置以及关键字在文件中的具体位置(第几行第几个字符)/好极了.py", line 15, in seach_keyword
f = open(each_file, 'r')
FileNotFoundError: [Errno 2] No such file or directory: '法.txt'
fafasfafsa ('.\\.idea', ['inspectionProfiles'], ['.gitignore', '4. 编写一个程序,用户输入关键字,查找当前文件夹内(如果当前文件夹内包含文件夹,则进入文件夹继续搜索)所有含有该关键字的文本文件(.txt后缀),要求显示该文件所在的位置以及关键字在文件中的具体位置(第几行第几个字符).iml', 'misc.xml', 'modules.xml', 'workspace.xml'])
文件名字 【.gitignore】 。
文件名字 【4. 编写一个程序,用户输入关键字,查找当前文件夹内(如果当前文件夹内包含文件夹,则进入文件夹继续搜索)所有含有该关键字的文本文件(.txt后缀),要求显示该文件所在的位置以及关键字在文件中的具体位置(第几行第几个字符).iml】 。
文件名字 【misc.xml】 。
文件名字 【modules.xml】 。
文件名字 【workspace.xml】 。
fafasfafsa ('.\\.idea\\inspectionProfiles', [], ['profiles_settings.xml'])
文件名字 【profiles_settings.xml】 。
fafasfafsa ('.\\232', [], ['法.txt'])
文件名字 【法.txt】 。
Process finished with exit code 1
|