【发布时间】:2020-12-18 07:32:10
【问题描述】:
我总是循环浏览目录的文件来执行各种数据操作。 因此,我总是使用以下代码
for subdir, dirs, files in os.walk(dir_):
for file_name in files:
# manipulations here
我没有继续为每个函数编写这些代码行,而是想知道是否可以通过使用装饰器使其变得更好。像下面这样:
# decorator
def wrapper_layer1(directory):
def wrapper_layer2(func):
def wrapper_layer3(*args, **kwargs):
for subdir, dirs, files in os.walk(dir_):
for file_name in files:
func(subdir, dirs, files, file_name)
return wrapper_layer3
return wrapper_layer2
return wrapper_layer1
# function
@wrapper_layer1(dir_=r"")
def func(subdir, dirs, files, file_name):
# manipulations here
我发现很多资源都集中在如何将参数传递给装饰器。 但是在这种情况下,它不仅需要将参数传递给装饰器,还需要装饰器将参数传递给函数。
有人知道怎么实现吗?
【问题讨论】:
-
这有什么问题?
-
第二段代码演示了我想要做什么,但实际上它不起作用大声笑
-
它有什么作用?你有错误吗?
-
它运行没有任何错误,但也没有输出。所以我不确定如何使它工作
-
好吧,你永远不会打电话给
func,所以你没有得到任何输出。