[英]How to read a value from another python file after file write?
我是 Stackoverflow 的新手,所以我会尽量详细地提出这个问题。 我面临一个问题,我调用一个函数将一个值写入 python 文件,并调用另一个函数来返回这个写入的值。 但是,应该返回这个写入值的函数在写入函数之后不会返回最新的值。
我已经进行了多项研究,并尝试了 Stackoverflow 中发布的其他问题的多种方法,但它仍然对我不起作用。
这是我目前拥有的:
在 test.py 中
import random
import string
from test_value import *
def write():
letters = string.ascii_letters
value_to_be_passed = ''.join(random.choice(letters) for i in range(10))
f = open("test_value.py", "w")
f.write('value="' + value_to_be_passed + '"')
f.close()
def read():
print(value)
write()
read()
在 test_value.py
value="MutmHDlVQj"
如果您运行此文件,它将生成一个新字符串并将此新字符串存储到 test_value.py 中。 但是当函数 read() 运行时,它不会打印出新生成的字符串。 好像当我运行这个程序时,python 会立即将 test_value.py 中的值存储在它的内存中,并且在调用时不会返回新值。
我已经尝试过 fsync、flush、open 但它仍然不起作用。 将文件作为纯文本读取并不理想,因为我可能会在 test_value.py 中存储多个变量,以便我的程序可以调用各个变量的值。
您可以在您的 ide 中运行代码,第一次运行时它会在您的终端中打印MutmHDlVQj ,即使目标应该打印新生成的字符串。
有谁知道如何解决这个问题? 先感谢您。
解决方法
感谢 Tripleee 让我想到了这个便宜的解决方案。 但是,我相信有更好的方法可以解决这个问题。 望专家对此发表意见!
我没有在编译时导入,而是在真正需要时运行导入。
def read():
from test_value import *
print(value)
import
发生在您的脚本编译时,在它运行并将任何内容写入新文件之前。 如果你想在运行时import
一些东西,你可以使用importlib
; 但这似乎基本上是一个XY 问题。 如果您的任务是序列化某些数据,请使用pickle
或简单地将数据保存为 JSON 等标准格式。
从导入方法你不能简单地传递一个变量作为返回值,你必须在 test_value.py 中指定一个返回函数。 这是功能代码:
import random
import string
from test_value import value
def write():
letters = string.ascii_letters
value_to_be_passed = ''.join(random.choice(letters) for I in range(10))
f = open("test_value.py", "w")
f.write('value="' + value_to_be_passed + '"')
f.close()
def read():
returned_value = value()
print(returned_value)
write()
read()
在 test_value.py 中:
def value():
value="SbjvLSYfNs"
return value
像这样写我有一个功能代码,可以打印从另一个python文件返回的值,就像你问的那样。
希望对以后有帮助,但是要记住,如果要返回值,必须指定返回函数
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.