Python Forum
why i don't like os.walk()
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
why i don't like os.walk()
#15
(Jan-10-2018, 05:54 AM)Skaperen Wrote: here are 2 commands on one line to make a tree and a 2 command pipeline to show the order i want my generator to yield results
os.walk() cannot do that because it only walks directories, not files.

I once wrote a nice generic non-recursive tree/graph traversal module named walktree. Using this module, it is a piece of cake to code your traversal

from collections import namedtuple
from walktree import walk
import os

Node = namedtuple('Node', 'path isdir')    

def subn(node):
    if not node.isdir:
        return ()
    pairs = sorted((e.path, e.is_dir(follow_symlinks=False))
                   for e in os.scandir(node.path))
    return (Node(*p) for p in pairs)


def flatwalk(path):
    root = Node(path, os.path.isdir(path) and not os.path.islink(path))
    for seq in walk(root, subn, walk.enter | walk.leaf):
        yield(seq[-1].path)

if __name__ == '__main__':
    for x in flatwalk('tryme'):
        print(x)
Remark: this code uses scandir() as recommended by G van Rossum.
Reply


Messages In This Thread
why i don't like os.walk() - by Skaperen - Jan-09-2018, 05:50 AM
RE: why i don't like os.walk() - by Larz60+ - Jan-09-2018, 06:35 AM
RE: why i don't like os.walk() - by Gribouillis - Jan-09-2018, 07:44 AM
RE: why i don't like os.walk() - by Skaperen - Jan-09-2018, 08:39 AM
RE: why i don't like os.walk() - by Gribouillis - Jan-09-2018, 08:48 AM
RE: why i don't like os.walk() - by DeaD_EyE - Jan-09-2018, 08:53 AM
RE: why i don't like os.walk() - by wavic - Jan-09-2018, 05:09 PM
RE: why i don't like os.walk() - by Gribouillis - Jan-09-2018, 05:18 PM
RE: why i don't like os.walk() - by Skaperen - Jan-10-2018, 03:26 AM
RE: why i don't like os.walk() - by Skaperen - Jan-10-2018, 04:44 AM
RE: why i don't like os.walk() - by Larz60+ - Jan-10-2018, 05:03 AM
RE: why i don't like os.walk() - by Gribouillis - Jan-10-2018, 05:12 AM
RE: why i don't like os.walk() - by Skaperen - Jan-10-2018, 05:54 AM
RE: why i don't like os.walk() - by Skaperen - Jan-10-2018, 07:01 AM
RE: why i don't like os.walk() - by Gribouillis - Jan-10-2018, 10:45 PM
RE: why i don't like os.walk() - by snippsat - Jan-10-2018, 11:59 PM
RE: why i don't like os.walk() - by Skaperen - Jan-11-2018, 01:37 AM
RE: why i don't like os.walk() - by Larz60+ - Jan-11-2018, 02:23 AM
RE: why i don't like os.walk() - by Skaperen - Jan-11-2018, 06:00 AM
RE: why i don't like os.walk() - by Gribouillis - Jan-11-2018, 07:07 AM
RE: why i don't like os.walk() - by Skaperen - Jan-11-2018, 08:39 AM

Possibly Related Threads…
Thread Author Replies Views Last Post
  examples using os.walk() Skaperen 12 7,318 Mar-22-2021, 05:56 PM
Last Post: Skaperen

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020