gpt4 book ai didi

python - 如何在程序生命周期中只运行一次 Python 方法?

转载 作者:太空宇宙 更新时间:2023-11-04 01:54:03 26 4
gpt4 key购买 nike

我构建了一个 Python Flask REST API,它对 POST 请求使用react。每次调用端点时,都会从服务器读取文件。我想知道有没有办法让文件只读一次?

我想要它以便仅在程序启动后才从文件中读取。目前,每次调用“/test”端点时都会读入文件。

这是 Controller 的一个例子:

@app.route('/test', methods=['POST'])
def test(data):
file_content = Data.readFile()
...
"Here do something with the file content and data"

Data.py 的内容如下:

def readFile():
with open(os.getcwd() + '/csv_files/' + config.WORDS, encoding="utf-8-sig", mode='r') as f:
csv_reader = csv.reader(f, delimiter=';')
file_content = [row[0] for row in csv_reader]
return file_content

我知道在 Java Spring 中您可以使用@PostConstruct 或@Configuration。 Python 中有类似的东西吗?

最佳答案

您可以为此创建一个闭包函数。

# Data.py
def read_file():
# the variable `read_file` is being modified inside the function
# ignoring the global declaration will create a local variable read_file
global read_file

with open(os.getcwd() + '/csv_files/' + config.WORDS, encoding="utf-8-sig", mode='r') as f:
csv_reader = csv.reader(f, delimiter=';')
file_content = [row[0] for row in csv_reader]

def inner():
return file_content

# read file is a global variable
# because it is declared as a function in the global scope
# we are modifying it here and monkey patching it with `inner`
# subsequent calls to `read_file` will inherently call `inner`
read_file = inner

# for the first time the function is called
return file_content

第一次调用 read_file() 时,文件被打开,file_content 被加载到变量中,变量 read_file 被替换通过内部函数。
对于后续方法调用,file_content 的值仅由 inner 函数返回。

关于python - 如何在程序生命周期中只运行一次 Python 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57309500/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com