Friday, February 27, 2009

如何得到一个路径下的所有子文件夹和子 文件的信息?

发信人: moonson (世界很奇妙,待我去创造), 信区: Python
标  题: 如何得到一个路径下的所有子文件夹和子 文件的信息?
发信站: 水木社区 (Fri Feb 27 14:59:22 2009), 转信

另外,如何判断一个路径是文件夹还是文件?
--
当知汉代的奴隶,并不专是农奴或苦役,奴隶市场出卖的奴婢,多是投入奢侈圈的,并
不是走进劳役阵线的。


※ 来源:·水木社区 http://newsmth.net·[FROM: 210.5.29.*]

发信人: Wanaka (Wanaka), 信区: Python
标  题: Re: 如何得到一个路径下的所有子文件夹和子 文件的信息?
发信站: 水木社区 (Fri Feb 27 15:00:28 2009), 转信


【 在 moonson (世界很奇妙,待我去创造) 的大作中提到: 】
: 标  题: 如何得到一个路径下的所有子文件夹和子 文件的信息?
用os.walk
: 发信站: 水木社区 (Fri Feb 27 14:59:22 2009), 转信
:
: 另外,如何判断一个路径是文件夹还是文件?
用os.path.isfile 和os.path.isdir

--

※ 修改:·Wanaka 于 Feb 27 15:02:14 2009 修改本文·[FROM: 202.120.58.*]
※ 来源:·水木社区 newsmth.net·[FROM: 202.120.58.*]

发信人: moonson (世界很奇妙,待我去创造), 信区: Python
标  题: Re: 如何得到一个路径下的所有子文件夹和子 文件的信息?
发信站: 水木社区 (Fri Feb 27 15:09:55 2009), 转信

多谢
刚才在网上看到一个os.listdir,与os.walk有何区别?

【 在 Wanaka (Wanaka) 的大作中提到: 】
: 用os.walk
: 用os.path.isfile 和os.path.isdir

--
当知汉代的奴隶,并不专是农奴或苦役,奴隶市场出卖的奴婢,多是投入奢侈圈的,并
不是走进劳役阵线的。


※ 来源:·水木社区 http://newsmth.net·[FROM: 210.5.29.*]

发信人: Wanaka (Wanaka), 信区: Python
标  题: Re: 如何得到一个路径下的所有子文件夹和子 文件的信息?
发信站: 水木社区 (Fri Feb 27 15:12:38 2009), 转信

listdir只返回制定目录下的文件和子目录,
walk返回的还有子目录下面的子目录和文件……,递归的。
用os.walk就不用os.listdir然后判断是否为目录进行再次listdir了。
【 在 moonson (世界很奇妙,待我去创造) 的大作中提到: 】
: 标  题: Re: 如何得到一个路径下的所有子文件夹和子 文件的信息?
: 发信站: 水木社区 (Fri Feb 27 15:09:55 2009), 转信
:
: 多谢
: 刚才在网上看到一个os.listdir,与os.walk有何区别?
:
: 【 在 Wanaka (Wanaka) 的大作中提到: 】
: : 用os.walk
: : 用os.path.isfile 和os.path.isdir

--

※ 来源:·水木社区 newsmth.net·[FROM: 202.120.58.*]

发信人: moonson (世界很奇妙,待我去创造), 信区: Python
标  题: Re: 如何得到一个路径下的所有子文件夹和子 文件的信息?
发信站: 水木社区 (Fri Feb 27 15:14:26 2009), 转信

got it thanks

【 在 Wanaka (Wanaka) 的大作中提到: 】
: listdir只返回制定目录下的文件和子目录,
: walk返回的还有子目录下面的子目录和文件……,递归的。
: 用os.walk就不用os.listdir然后判断是否为目录进行再次listdir了。

--
当知汉代的奴隶,并不专是农奴或苦役,奴隶市场出卖的奴婢,多是投入奢侈圈的,并
不是走进劳役阵线的。


※ 来源:·水木社区 http://newsmth.net·[FROM: 210.5.29.*]

发信人: N23 (23号), 信区: Python
标  题: Re: 如何得到一个路径下的所有子文件夹和子 文件的信息?
发信站: 水木社区 (Fri Feb 27 15:44:11 2009), 转信

Shell:~/mylibs/lib/Python/MyPyLib >: cat DirectoryStatWalker.py
#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import os
import stat

class DirectoryStatWalker:
    # a forward iterator that traverses a directory tree, and
    # returns the filename and additional file information

    def __init__(self, directory):
        self.stack = [directory]
        self.files = []
        self.index = 0

    def __getitem__(self, index):
        while 1:
            try:
                file = self.files[self.index]
                self.index = self.index + 1
            except IndexError:
                # pop next directory from stack
                self.directory = self.stack.pop()
                self.files = os.listdir(self.directory)
                self.index = 0
            else:
                # got a filename
                fullname = os.path.join(self.directory, file)
                st = os.stat(fullname)
                mode = st[stat.ST_MODE]
                if stat.S_ISDIR(mode) and not stat.S_ISLNK(mode):
                    self.stack.append(fullname)
                return fullname, st

if __name__ == '__main__':
    for file, st in DirectoryStatWalker("/usr/include"):
        print file, st[stat.ST_SIZE]

【 在 moonson (世界很奇妙,待我去创造) 的大作中提到: 】
: 另外,如何判断一个路径是文件夹还是文件?

No comments: