|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
请帮忙看下下面这段代码问题在哪里,会报错。谢谢。
import os
def file_size():
files = dict()
all_files = os.listdir(os.curdir)
for each_file in all_files:
if os.path.isfile(each_file):
files[each_file] = os.path.getsize(each_file)
else:
file_size()
os.chdir(os.pardir)
for each in files:
print('%s 【%d】' %(each,files(each)))
file_size()
好吧, 仔细分析了你的代码, 存在这么几个问题:
1. 定义dict的时候需要在函数外部, 不然递归调用的时候会清空dict里面的内容
2. 取字典里面的值是用中括号, 像这样 而不是用小括号
3. else里面的递归调用存在逻辑错误, 这个错误和函数整体的参数设计有关, 递归函数一般都需要参数的, 这里定义一个目录名作为形参, 并且赋初值为当前目录, 把进入目录的操作移到函数开头, 我贴上我的代码:
- import os
- files = dict()
- def file_size(dirName='.'):
- global files
- os.chdir(dirName)
- all_files = os.listdir(os.curdir)
- for each_file in all_files:
- if os.path.isfile(each_file):
- files[each_file] = os.path.getsize(each_file)
- else:
- file_size(each_file)
- os.chdir('..')
- for each in files:
- print('%s 【%d】' % (each, files[each]))
- file_size()
复制代码
|
|