如何重新导入从单独文件读取的模块变量?

问题描述 投票:0回答:0

我想知道如何更新模块导入,即使该模块的内容没有显式更改。我在 Spyder 工作。比如我有一个简化的文件目录:

test/
├── main.py
├── test_data.py
└── test_data.csv

我有一个数据文件:

# test_data.csv

x,  y
1,  5
3,  20

此文件使用 pandas 读入模块并保存为变量。

# test_data.py

from pandas import read_csv
t_data = read_csv("test_data.csv", sep=',')
print(t_data)

main.py
文件然后从模块导入这个变量并打印出来:

# main.py

from test_data import t_data
print(t_data)

如果我运行

main
,那么预期会发生:

   x   y
0  1   5
1  3  20

   x   y
0  1   5
1  3  20

但是,如果我随后更改 CSV 文件的内容(例如,将第二行设置为“2、10”),则在重新评估

main
时不会反映此更改:

   x   y
0  1   5
1  3  20

似乎解释器没有重新评估和重新导入模块,因为模块没有任何 explicit 更改。当我do对模块(除了文件)进行显式更改时,

# test_data.py

t_data = read_csv("test_data.csv", sep=',')
print('Hello')  # <-- Added this line
print(t_data)

然后运行

main
返回:

Hello

   x   y
0  1   5
1  2  10

   x   y
0  1   5
1  2  10

我意识到可能有更好的方法来完成这一切,但我对这里的行为很好奇。有没有办法在每次运行时更新模块中的 CSV 数据?

python ipython python-import spyder
© www.soinside.com 2019 - 2024. All rights reserved.