python - 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' 因为我认为这是装饰器函数应该在这里做的,即如果第一个函数完成,则运行装饰函数。
解决方案
推荐阅读
- python - 无法将 aws 胶水动态帧转换为火花数据帧
- facebook-graph-api - 导出 facebook-graph-api 中所有帖子的所有评论
- amazon-web-services - RClone:将 AWS S3 访问密钥和秘密密钥存储在我的服务器而不是用户计算机/桌面应用程序中
- java - 我如何在android中制作发光按钮
- javascript - TypeError:无法在“URL”上执行“createObjectURL”:找不到与提供的签名匹配的函数
- reactjs - 如何与组件共享变量
- selenium - 有没有办法使用黄瓜钩子从单个功能文件中运行所有标记的场景?
- angular - 为什么我会收到角度反应形式的表单重新提交警报?
- node.js - mongoose文档如何设置过期时间长?
- highcharts - Highchart - 删除日期表单工具提示