鱼C论坛

 找回密码
 立即注册
查看: 1379|回复: 4

[已解决]os模块的问题。

[复制链接]
发表于 2018-1-26 17:00:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
看第三十讲的课后作业,没看明白为什么,递归回去的是一个文件名并不是一个文件路径,为啥函数还能运行。。
'''1.编写一个程序,计算当前文件夹下面所有文件的大小'''
def bate(path):
    os.chdir(path)
    for each in os.listdir(os.curdir):
        if os.path.isfile(each):
            print(each,os.path.getsize(each),'Bytes')
        else:
            bate(each)  #递归
            os.chdir(os.pardir)

bate(r'G:\python\甲鱼')
最佳答案
2018-1-26 17:05:32
isfile(each)返回的是TRUE FALSE.
else的情况就是,当each不是文件(即是文件夹)的时候,
返回一个文件路径。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-1-26 17:05:32 | 显示全部楼层    本楼为最佳答案   
isfile(each)返回的是TRUE FALSE.
else的情况就是,当each不是文件(即是文件夹)的时候,
返回一个文件路径。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-26 17:16:48 | 显示全部楼层
vstia 发表于 2018-1-26 17:05
isfile(each)返回的是TRUE FALSE.
else的情况就是,当each不是文件(即是文件夹)的时候,
返回一个文件路 ...

我把else的情况print出来,看着就是文件夹名呀
TIM截图20180126171541.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-26 17:36:55 | 显示全部楼层
本帖最后由 vstia 于 2018-1-26 17:37 编辑

因为是curdir(当前文件夹)
所以前面没有路径会默认范围是当前文件夹。
你可以自己用listdir在shell里打印试试。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-26 17:58:26 | 显示全部楼层
vstia 发表于 2018-1-26 17:36
因为是curdir(当前文件夹)
所以前面没有路径会默认范围是当前文件夹。
你可以自己用listdir在shell里打 ...

好像明白了!谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-6 09:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表