当前位置:  开发笔记 > 编程语言 > 正文

Python中的目录树列表

如何解决《Python中的目录树列表》经验,为你挑选了8个好方法。

如何获取Python中给定目录中所有文件(和目录)的列表?



1> Jerub..:

这是遍历目录树中每个文件和目录的方法:

import os

for dirname, dirnames, filenames in os.walk('.'):
    # print path to all subdirectories first.
    for subdirname in dirnames:
        print(os.path.join(dirname, subdirname))

    # print path to all filenames.
    for filename in filenames:
        print(os.path.join(dirname, filename))

    # Advanced usage:
    # editing the 'dirnames' list will stop os.walk() from recursing into there.
    if '.git' in dirnames:
        # don't go into any .git directories.
        dirnames.remove('.git')


这将*递归*列出文件和目录
如果从Python Shell运行此代码(按原样),请记住Ctrl + C将暂停输出到所述shell.;)
@Clément"当topdown为True时,调用者可以就地修改dirnames列表(可能使用del或slice赋值),而walk()只会递归到名称保留在dirnames中的子目录;这可以用来修剪搜索,强制执行特定的访问顺序,甚至通知walk()有关调用者在再次恢复walk()之前创建或重命名的目录." 来自http://docs.python.org/2/library/os.html#os.walk

2> rslite..:

您可以使用

os.listdir(path)

有关参考和更多os函数,请在此处查看:

Python 2文档:https://docs.python.org/2/library/os.html#os.listdir

Python 3文档:https://docs.python.org/3/library/os.html#os.listdir


listdir为您提供目录中唯一的文件名,是否有可用于获取完整路径的方法?
@Tommy,"目录"是一个明确定义的数据结构,它指的是"ls"而不是"ls -R".此外,默认情况下,几乎所有UNIX工具都不能递归工作.我不知道提问者*意味着什么*但他*写的*是清楚的.

3> giltay..:

这是我经常使用的辅助函数:

import os

def listdir_fullpath(d):
    return [os.path.join(d, f) for f in os.listdir(d)]


发电机会更好。
已经十年了,但是我想我是这样做的,因为os.listdir()返回一个列表并且我在模仿那个。
有助于获得完整的路径,感谢您的把戏;)

4> curtisk..:
import os

for filename in os.listdir("C:\\temp"):
    print  filename


`r'C:\ temp'`更清晰,更喜欢"C:\\ temp"`Rawstrings比escpaing反斜杠更可取.
传递一个Unicode字符串以获取Unicode返回值.

5> kenny..:

如果你需要通配能力,那么也有一个模块.例如:

import glob
glob.glob('./[0-9].*')

将返回如下内容:

['./1.gif', './2.txt']

请参阅此处的文档.



6> paxdiablo..:

试试这个:

import os
for top, dirs, files in os.walk('./'):
    for nm in files:       
        print os.path.join(top, nm)



7> Dave Enginee..:

对于当前工作目录中的文件而不指定路径

Python 2.7:

import os
os.listdir(os.getcwd())

Python 3.x:

import os
os.listdir()

感谢Stam Kaly对python 3.x的评论


os.listdir()默认列出当前目录中的元素!因此不需要os.getcwd():)

8> Arnaldo P. F..:

递归实现

import os

def scan_dir(dir):
    for name in os.listdir(dir):
        path = os.path.join(dir, name)
        if os.path.isfile(path):
            print path
        else:
            scan_dir(path)

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有