函数过滤模式os.步行()带函数链接

2024-10-02 20:39:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在Python的os.walk()期间包含/排除一些文件。你知道吗

我的解决方案可以是imperative,但是我的代码的用户应该能够进行declartive编程。你知道吗

include/exclude模式需要以语言中立的表示形式给出(例如json)。你知道吗

你知道怎么解决这个问题吗?你知道吗


Tags: 文件代码用户语言jsonincludeos编程
1条回答
网友
1楼 · 发布于 2024-10-02 20:39:00

这既是命令性的,也是声明性的。你知道吗

find ./some_dir | grep -e '*.txt' | grep -v 'dont_keep.txt'

下面是一个json示例,它是命令式和声明式的:

bullets = {"include": ['hello'], "exclude": ['*.txt', '*.jpeg']}
weapon = filter(bullets)
walkers = os.walk('.')
[weapon(zombie) for zombie in walkers]

这里有一个例子,这两者兼而有之,而且比它需要的要复杂得多:

from functools import wraps
def zombie_killer(f):
    @wraps(f)
    def moral_code(**kwargs):
        w = kwargs.get('weapon', '')
        f = kwargs.get('friendlies', '')
        z = kwargs.get('zombies', '')
        def maps(walkers):
            for (hilltop, houses, zombies) in walkers:
                for creature in zombies:
                    if creature in f:
                        yield f
                    elif creature in zombie:
                        yield
        return maps
    return moral_code

@zombie_killer
def kill_directive(*args, **kwargs):
    ''' magic goes here '''
    print(args, kwargs)


watch = kill_directive(weapon=bullets, 
                       friendlies=['rick', 'morty'], 
                       zombies=['*.txt', '*.pid'])
list(watch(walkers))

这里可以看到一个非常好的例子:

相关问题 更多 >