python 的一个简单问题

hispania 2010-10-18 02:55:13
最近公司 要用pygtk 做客户端。我目前在做事件处理部分,由于时间很紧张,我也没学过python,目前只能边学边用了。今天在做一个计算文件夹大小的功能。看到网上的一个帖子,但有句话 看不太懂,希望大家能够帮我解释下:

===============================================================
源程序如下:
import os
from os.path import join,getsize

def getDirSize(dir):
size = 0L
for root,dirs,files in os.walk(dir):
size+=sum([getsize(join(root,name)) for name in files])
return size

def mian():
filesize = getDirSize(r '/yun_source')
print(" there are %.3f" % (filesize/1024/1024)
return 0

if __name__ == '__main__':
main()
===============================================================
其中,
size+=sum([getsize(join(root,name)) for name in files])
这句话 我没有看懂, 特别是 getsize(join(root,name)) 这部分。

希望好心人 能够帮我解释下。
...全文
140 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zanpen2000 2010-11-15
  • 打赏
  • 举报
回复
那就这样
from os.path import isfile
size+=sum([getsize(join(root,name)) for name in files if isfile(name)])
hispania 2010-10-21
  • 打赏
  • 举报
回复
我在linux 下用该函数求文件夹的大小,有时能够通过,有时却通不过:
报错如下:(例如我打开根目录下的etc文件夹,就会报错)
Traceback(most recent call last):
File "/python_object/face_1.py", Line 151, in onConfig_SyncFolder_add
self.size=self.Dir_Size(self.Folder_name)

File "/python_object/face_1.py", Line 176, in Dir_Size
size+=sum([getsize(join(root,name)) for name in files])

File "/usr/lib/python2.6/genericpath.py",Line 49,in getsize
return os.stat(filename).st_size

OSError:[Errno 2] 没有那个文件或目录:'/etc/alternatives/jaf_javadoc'

报错说没有该文件目录,导致程序崩溃。
=========================================================================
有没有好心人 帮忙解释下啊,顺便该下代码 谢谢啊!!!!!



matlab2000 2010-10-19
  • 打赏
  • 举报
回复
呵呵。新手对这些浓缩的代码一般不容易理解。我们这边也有一个新手做设备批量升级,手工升级是使用的http post方式,所以使用了httplib来做的升级。 界面使用了wxPython,对于每个设备,都派生一个线程,然后用Queue来管理消息的下发和反馈。从头开始会很晕的,要多看书,多学习,细节上有时候就得去看库的源代码,才能理解。
guzl86 2010-10-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 selecthis 的回复:]

size+=sum([getsize(join(root,name)) for name in files])
循环从遍历的文件路径下获取大小。
Python code

>>> help(getsize)
Help on function getsize in module ntpath:

getsize(filename)
Return the size of a file,……
[/Quote]
赞同,并说明。
getsize接口的意义就是传入一个文件的路径,返回这个文件的大小。你要计算一个文件夹的大小,就是计算文件夹下面所有文件的大小之和。
李察德-泰森 2010-10-18
  • 打赏
  • 举报
回复
size+=sum([getsize(join(root,name)) for name in files])
循环从遍历的文件路径下获取大小。

>>> help(getsize)
Help on function getsize in module ntpath:

getsize(filename)
Return the size of a file, reported by os.stat()

37,739

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧