首页 > 解决方案 > python:访问装饰函数的返回值

问题描述

我有一个如下目录:

my_dir
  |__data
  |   |__fill
  |        |__ old_data.csv
  |        |__new.csv
  |         
  |read.py

我有一个包含以下代码的 read.py 文件:

import argparse
import os
from config import data_dir
import pandas as pd


def my_func(func):
    def wrapper():
        if any(fname.startswith('gold') for fname in os.listdir(os.path.join(data_dir, 'fill'))):
            parser = argparse.ArgumentParser()
            parser.add_argument('--dir')
            args = parser.parse_args()
            if args.dir is None:
                args.dir = input('Enter data directory:')
                directory = args.dir
                path = os.path.join(data_dir, os.path.join(directory, 'new.csv'))
                return path
        return func()
        return wrapper

@my_func
def another_func():
    if not any(fname.startswith('old') for fname in os.listdir(data_dir)):
        path = os.path.join(data_dir, os.path.join(data.dir, 'old_data.csv'))
        data_ = pd.read_csv(path)
        return data_

print(another_func())

当我运行上面的代码时,它返回 None,这没关系,因为没有以单词“gold”开头的数据集,但是,我希望发生的是 print(another_func()) 打印的内容'old_data.csv' 因为我认为这是装饰器函数应该在这里做的,即如果第一个函数完成,则运行装饰函数。

标签: pythonfunctiondecoratorreturn-value

解决方案


推荐阅读