标签: os.walk

使用os.walk()以递归方式遍历Python中的目录

我想从根目录导航到其中的所有其他目录并打印相同的目录.

这是我的代码:

#!/usr/bin/python

import os
import fnmatch

for root, dir, files in os.walk("."):
        print root
        print ""
        for items in fnmatch.filter(files, "*"):
                print "..." + items
        print ""
Run Code Online (Sandbox Code Playgroud)

这是我的O/P:

.

...Python_Notes
...pypy.py
...pypy.py.save
...classdemo.py
....goutputstream-J9ZUXW
...latest.py
...pack.py
...classdemo.pyc
...Python_Notes~
...module-demo.py
...filetype.py

./packagedemo

...classdemo.py
...__init__.pyc
...__init__.py
...classdemo.pyc
Run Code Online (Sandbox Code Playgroud)

以上,.并且./packagedemo是目录.

但是,我需要以下列方式打印O/P:

A
---a.txt
---b.txt
---B
------c.out
Run Code Online (Sandbox Code Playgroud)

以上,A并且B是目录,其余的文件.

python os.walk

129
推荐指数
7
解决办法
25万
查看次数

os.walk没有深入到下面的目录

如何限制os.walk只返回我提供的目录中的文件?

def _dir_list(self, dir_name, whitelist):
    outputList = []
    for root, dirs, files in os.walk(dir_name):
        for f in files:
            if os.path.splitext(f)[1] in whitelist:
                outputList.append(os.path.join(root, f))
            else:
                self._email_to_("ignore")
    return outputList
Run Code Online (Sandbox Code Playgroud)

python file os.walk

95
推荐指数
8
解决办法
10万
查看次数

递归子文件夹搜索并返回列表python中的文件

我正在编写一个脚本来递归遍历主文件夹中的子文件夹并构建一个特定文件类型的列表.我遇到了脚本问题.目前设定如下

for root, subFolder, files in os.walk(PATH):
    for item in files:
        if item.endswith(".txt") :
            fileNamePath = str(os.path.join(root,subFolder,item))
Run Code Online (Sandbox Code Playgroud)

问题是subFolder变量正在拉入子文件夹列表而不是ITEM文件所在的文件夹.我想在之前为子文件夹运行for循环并加入路径的第一部分,但我想我会仔细检查以确定是否有人在此之前有任何建议.谢谢你的帮助!

python recursion list os.walk

95
推荐指数
8
解决办法
12万
查看次数

os.walk迭代迭代的顺序是什么?

我担心文件和目录的顺序os.walk().如果我有这些目录,1,10,11,12,2,20,21,22,3,30,31,32,什么是输出列表的顺序?

它是按数值排序的吗?

1 2 3 10 20 30 11 21 31 12 22 32
Run Code Online (Sandbox Code Playgroud)

或者按ASCII值排序,就像给出的那样ls

1 10 11 12 2 20 21 22 3 30 31 32
Run Code Online (Sandbox Code Playgroud)

另外,我该如何获得特定的排序?

python sorting os.walk

60
推荐指数
3
解决办法
4万
查看次数

过滤os.walk()目录和文件

我正在寻找一种方法来包含/排除文件模式并从os.walk()调用中排除目录.

这就是我现在正在做的事情:

import fnmatch
import os

includes = ['*.doc', '*.odt']
excludes = ['/home/paulo-freitas/Documents']

def _filter(paths):
    matches = []

    for path in paths:
        append = None

        for include in includes:
            if os.path.isdir(path):
                append = True
                break

            if fnmatch.fnmatch(path, include):
                append = True
                break

        for exclude in excludes:
            if os.path.isdir(path) and path == exclude:
                append = False
                break

            if fnmatch.fnmatch(path, exclude):
                append = False
                break

        if append:
            matches.append(path)

    return matches

for root, dirs, files in os.walk('/home/paulo-freitas'):
    dirs[:] = _filter(map(lambda d: …
Run Code Online (Sandbox Code Playgroud)

python filtering os.walk

41
推荐指数
3
解决办法
8万
查看次数

没有隐藏文件夹的os.walk

我需要列出文件夹中包含目录路径的所有文件.我尝试使用os.walk,这显然是完美的解决方案.

但是,它还列出了隐藏的文件夹和文件.我希望我的应用程序不要列出任何隐藏的文件夹或文件.是否有任何标志可以用来使它不产生任何隐藏文件?

跨平台对我来说并不重要,只要它适用于linux(.*pattern)就可以了.

python linux os.walk

33
推荐指数
2
解决办法
2万
查看次数

更快到os.walk还是glob?

我在大型硬盘上乱码python中的文件查找.我一直在看os.walk和glob.我经常使用os.walk,因为我发现它更整洁,似乎更快(对于通常的大小目录).

有没有人对他们有任何经验,可以说哪个更有效率?正如我所说,glob似乎更慢,但你可以使用通配符等,就像walk一样,你必须过滤结果.以下是查找核心转储的示例.

core = re.compile(r"core\.\d*")
for root, dirs, files in os.walk("/path/to/dir/")
    for file in files:
        if core.search(file):
            path = os.path.join(root,file)
            print "Deleting: " + path
            os.remove(path)
Run Code Online (Sandbox Code Playgroud)

要么

for file in iglob("/path/to/dir/core.*")
    print "Deleting: " + file
    os.remove(file)
Run Code Online (Sandbox Code Playgroud)

python glob traversal os.walk directory-walk

29
推荐指数
2
解决办法
2万
查看次数

非递归的os.walk()

我正在寻找一种方法来进行非递归os.walk()步行,就像os.listdir()工作一样.但我需要以同样的方式os.walk()返回.任何的想法?

先感谢您.

python os.walk non-recursive

28
推荐指数
3
解决办法
1万
查看次数

我可以强制python3的os.walk按字母顺序访问目录吗?怎么样?

我想知道是否可以在python3中强制os.walk按字母顺序访问目录.例如,这是一个目录和一些将遍历此目录的代码:

ryan:~/bktest$ ls -1 sample
CD01
CD02
CD03
CD04
CD05

--------

def main_work_subdirs(gl):
    for root, dirs, files in os.walk(gl['pwd']):
        if root == gl['pwd']:
            for d2i in dirs:
                print(d2i)
Run Code Online (Sandbox Code Playgroud)

当python代码点击上面的目录时,输出如下:

ryan:~/bktest$ ~/test.py sample
CD03
CD01
CD05
CD02
CD04
Run Code Online (Sandbox Code Playgroud)

我想强迫步行按字母顺序访问这些目录01, 02 ... 05.在python3 doc中os.walk,它说:

当topdown为True时,调用者可以就地修改dirnames列表(可能使用del或slice赋值),而walk()只会递归到名称保留在dirnames中的子目录中; 这可以用来修剪搜索,强加一个特定的访问顺序

这是否意味着我可以强加一个按字母顺序排列的访问顺序os.walk?如果是这样,怎么样?

os.walk python-3.x

25
推荐指数
2
解决办法
5072
查看次数

使用os.walk()需要特定文件的路径

我正在尝试执行一些地理处理.我的任务是在目录中找到所有shapefile,然后在目录中找到该shapefile的完整路径名.我可以获取shapefile的名称,但我不知道如何获取该shapefile的完整路径名.

shpfiles = []
for path, subdirs, files in os.walk(path):
    for x in files:
        if x.endswith(".shp") == True:
            shpfiles.append[x]
Run Code Online (Sandbox Code Playgroud)

python os.walk shapefile

23
推荐指数
1
解决办法
5万
查看次数