python简单问题求解?

def numOfFiles(path,num=1):
try:
if os.path.isdir(dir):
num=num-1
for x in os.listdir(path):
num+=1
except BaseException as e:
pass
finally:
return num

我想用这个方法统计目录文件个数,如果是目录就进去看有多好啊文件,如果是文件就返回1,但是调用的时候,是文件的话,应该没有进循环,文件数不是1,这是怎么回事?

如果从你的需求考虑。你的程序有几个问题。

1、try可以取消,你的本意可能是判断目录是否有效,但如果目录无效os.path.isdir(dir)会返回flase,所以try多余了。(当然如果是课程要求学习异常处理try的用法除外)。

2、num是文件的个数,它不需要调用函数传入的参数。def numOfFiles(path,num=1):中num=1多余了。

3、dir没有声明,要么你换成path,要么,在前面加上 dir = path。

4、os.listdir(path)是遍历path目录下的所有文件和目录,所以如果有子目录,你的num会直接+1,而不会再次进入子目录统计。这里就要用到递归函数。具体看例子吧

温馨提示:答案为网友推荐,仅供参考
相似回答