更新变量 Python 文件中的变量值
Update variable value in variables Python file
我有一个带有密钥 TOKEN= 123456
的 variables.py
文件。我需要在需要时动态更新该值。
文件 Constants.py 内容如下:
#!/usr/bin/env python
# encoding: utf-8
"""
variables.py
"""
TOKEN= 50
和refresh_tok.py
#!/usr/bin/env python
# encoding: utf-8
"""
refresh_tok.py
"""
import variables
def refresh_token():
print(variables.TOKEN) // previous value 50
change_constant(variables.TOKEN, 100)
print(variables.TOKEN) // value I am expecting is 100 but it says 50
def change_constant(match_string, replace_string):
read_file = open("variables.py", "rt")
read_data = read_file.read()
read_data = read_data.replace(match_string, replace_string)
read_file.close()
write_file = open("variables.py", "wt")
write_file.write(read_data)
write_file.close()
我在 refresh_tok.py 的第二个打印语句中期望的值是 100,但它仍然是以前的值并打印 50 而不是 100。
您似乎对计算机程序的本质存在根本性的误解。
您的 change_constant
函数从文件中读取源代码作为字符串,创建一个新字符串来更改该源代码,然后将该新字符串写入同一文件。这 永远不会 影响您加载的模块。理解这一点非常重要。
相反,您需要做的就是:
variables.TOKEN = new_value
当然,这只影响运行进程。如果你需要坚持这些变化,那么你需要选择某种持久化策略,例如写入文件。为此使用 python 源代码通常不是一个好的做法,而是使用一些合适的序列化格式,例如JSON、pickle、类似 INI 的配置文件、YAML 等等(或者即使它非常简单只是一个文本文件)。
我有一个带有密钥 TOKEN= 123456
的 variables.py
文件。我需要在需要时动态更新该值。
文件 Constants.py 内容如下:
#!/usr/bin/env python
# encoding: utf-8
"""
variables.py
"""
TOKEN= 50
和refresh_tok.py
#!/usr/bin/env python
# encoding: utf-8
"""
refresh_tok.py
"""
import variables
def refresh_token():
print(variables.TOKEN) // previous value 50
change_constant(variables.TOKEN, 100)
print(variables.TOKEN) // value I am expecting is 100 but it says 50
def change_constant(match_string, replace_string):
read_file = open("variables.py", "rt")
read_data = read_file.read()
read_data = read_data.replace(match_string, replace_string)
read_file.close()
write_file = open("variables.py", "wt")
write_file.write(read_data)
write_file.close()
我在 refresh_tok.py 的第二个打印语句中期望的值是 100,但它仍然是以前的值并打印 50 而不是 100。
您似乎对计算机程序的本质存在根本性的误解。
您的 change_constant
函数从文件中读取源代码作为字符串,创建一个新字符串来更改该源代码,然后将该新字符串写入同一文件。这 永远不会 影响您加载的模块。理解这一点非常重要。
相反,您需要做的就是:
variables.TOKEN = new_value
当然,这只影响运行进程。如果你需要坚持这些变化,那么你需要选择某种持久化策略,例如写入文件。为此使用 python 源代码通常不是一个好的做法,而是使用一些合适的序列化格式,例如JSON、pickle、类似 INI 的配置文件、YAML 等等(或者即使它非常简单只是一个文本文件)。