鱼C论坛

 找回密码
 立即注册
查看: 2096|回复: 7

[已解决]计算文件夹下每个文件的大小

[复制链接]
发表于 2019-11-18 13:49:28 | 显示全部楼层 |阅读模式

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

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

x
import os

path='/Users/mac/Desktop/curdir'
all_files = os.listdir(path)
size_dict = dict()

for each in all_files:
    if os.path.isfile(each):
        file_size = os.path.getsize(each)
        size_dict[each] = file_size
        
print(size_dict)
        

运行结果是一个空字典,这是为什么呀?(用Spyder编译的)
runfile('/Users/mac/Desktop/文件检索.py', wdir='/Users/mac/Desktop')
{}
最佳答案
2019-11-18 16:25:22
本帖最后由 jackz007 于 2019-11-18 16:28 编辑
zpx1002 发表于 2019-11-18 16:03
呃,我的计算机确实还在幼儿园水平 才刚开始学习。。好多不懂的概念
我不明白的就是您刚刚讲 ...


      靠谱,我的意思正是你搜索的路径并不是 os . curdir,而 os . listdir(path)  得到的文件和子目录是不带路径的,必须和 path 结合起来成为绝对路径,os . path . isfile() 和 os . path . getsize() 才可以找到文件。如果搜索的就是 os . curdir,那就不用加 path 了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-11-18 14:10:24 | 显示全部楼层
本帖最后由 jackz007 于 2019-11-18 14:17 编辑

       因为不在当前目录下,所以,对所有文件的判断和信息提取必须使用绝对路径。
import os

path='/Users/mac/Desktop/curdir'
size_dict = dict()

for each in os . listdir(path):
    x = os . path . join(path , each)
    if os . path . isfile(x):
        size_dict[x] = os . path . getsize(x)
        
print(size_dict)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-18 15:16:17 | 显示全部楼层
jackz007 发表于 2019-11-18 14:10
因为不在当前目录下,所以,对所有文件的判断和信息提取必须使用绝对路径。

谢谢您!
想问一下什么叫当前目录,是指我检索的目录应当和我这个python文件在同一目录下吗?(这两个文件我都放在桌面了)

另外,还想问下,os和os.path有什么区别,我看到您这里用了os.path.join,我搜了一下,是将多个路径组合后返回。。请问您能用通俗的语言解释一下这行代码的作用吗,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-18 15:46:48 | 显示全部楼层
本帖最后由 jackz007 于 2019-11-18 16:02 编辑
zpx1002 发表于 2019-11-18 15:16
谢谢您!
想问一下什么叫当前目录,是指我检索的目录应当和我这个python文件在同一目录下吗?(这两个文 ...


         你要搜索哪个目录,只要写绝对路径就可以了,不需要必须与 Python 代码文件在同一个目录。你如果连当前目录都不知道,那我也无法给你解释,因为这完全属于幼儿园的知识。
         x = os  . path . join('C:\\Windows'  , 'System32')  将得到 x = 'C:\\Windows\\System32' 的字符串,所以, os  . path . join() 是专门用来拼接路径字符串的,其效果和 x = 'C:\\Windows'  + '\\' + 'System32' 是完全一样的。
       至于 os 和 os . path 的区别我也不知道,我只关心 os 库中一些常用的函数,只要会用就行,其它的通通不用关心。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-18 16:03:04 | 显示全部楼层
jackz007 发表于 2019-11-18 15:46
你要搜索哪个目录,只要写绝对路径就可以了,不需要必须与 Python 代码文件在同一个目录。你 ...

呃,我的计算机确实还在幼儿园水平 才刚开始学习。。好多不懂的概念
我不明白的就是您刚刚讲的 不在当前目录下,这句话的主语是什么啊,什么不在当前目录下?

如果all_files = os.listdir(os.curdir) ,这样是不是就在当前目录下了?这样写就不需要写完想检索的文件夹路径了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-18 16:25:22 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2019-11-18 16:28 编辑
zpx1002 发表于 2019-11-18 16:03
呃,我的计算机确实还在幼儿园水平 才刚开始学习。。好多不懂的概念
我不明白的就是您刚刚讲 ...


      靠谱,我的意思正是你搜索的路径并不是 os . curdir,而 os . listdir(path)  得到的文件和子目录是不带路径的,必须和 path 结合起来成为绝对路径,os . path . isfile() 和 os . path . getsize() 才可以找到文件。如果搜索的就是 os . curdir,那就不用加 path 了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-11-18 16:47:53 | 显示全部楼层
jackz007 发表于 2019-11-18 16:25
靠谱,我的意思正是你搜索的路径并不是 os . curdir,而 os . listdir(path)  得到的文件和子目 ...

好的,很感谢耐心的解答!我再去看一下相关的博客学习一下os模块。。

想问下您:
如果改成all_files = os.listdir(os.curdir) ,他检索的就是我这个py文件所在的目录是吗?
我运行了一下,他检索范围是桌面上的所有文件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-18 16:55:49 From FishC Mobile | 显示全部楼层
    是的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 20:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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