我想知道如何更新模块导入,即使该模块的内容没有显式更改。我在 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 数据?