我有一个名为testings.py
的python文件,在此文件中,我通过网络抓取相关数据来派生词典。要填充字典需要几分钟。
我想做的是,而不是将整个脚本复制到名为webscraper.py
的其他python脚本中,然后每次运行webscraper.py
时都有效地运行这两个脚本,而不是将字典从testing.py
脚本导入第二个脚本webscraper.py
,然后每次运行webscraper.py
时都保存自己的那几分钟。
很多时候我的字典会过时,在这种情况下,我只会在启动testings.py
之前运行webcraper.py
。有什么方法可以满足我的要求吗?
要注意的另一件事是,在testings.py
的开头有my_dict = {}
,直到脚本结束时my_dict
才完全填充。因此,当我导入它时,我想导入它的完全填充版本,就像脚本已完全运行一样。
答案 0 :(得分:1)
您可以通过多种方式保存字典以进行归档(签出https://docs.python.org/3/library/pickle.html或https://docs.python.org/3/library/json.html以及如何编写文件https://docs.python.org/3/library/io.html?highlight=open),然后从其他脚本中读取字典
或者您可以只将抓取脚本导入另一个脚本,然后从那里调用抓取函数,返回结果-但这只是一个解决方案,如果您不介意在此处运行抓取,然后又不想重用以前的抓取结果。
答案 1 :(得分:0)
当我运行此脚本时:
from tester import my_dict
print ('Now in second script.')
print (my_dict)
它实际上运行名为tester.py的脚本,然后导入并打印my_dict。
my_dict = {}
for x in range (20) :
for y in range (10) :
my_dict [x] = y
print (my_dict)
input ('All done now.')