如何解决如何仅从其他py文件导入变量?
嗨,我正在尝试通过抓取新闻文章来实现类似的文档推荐和搜索功能。 以下是一个py文件,可加载新闻报道并将信息存储在一个数组中。
from daumnews import get_news_daum,get_news_contents_seoulgyeongje
from sklearn.feature_extraction.text import TfidfVectorizer
import os
links,titles = get_news_daum()
#执行get_news_daum()函数时,链接和标题将作为列表保存在链接和标题变量中。
contents = []
similarities = []
os.chdir("C:/Users/hanbonghun/Desktop/newsscrapping/news")
for i in range(len(links)):
with open(f'{i+1}.txt',"w",encoding="utf-8") as f:
contents.append(get_news_contents_seoulgyeongje(f,links[i]))
##当执行get_news_contents_seoulgyeongje()函数时,已刮取文档的标题和内容将保存在特定位置 文件夹,并将每个内容另存为列表 变量。
vect = TfidfVectorizer(min_df=1,stop_words="english")
tfidf = vect.fit_transform(contents)
pairwise_similarity = tfidf * tfidf.T
similarities = pairwise_similarity.toarray()
print("succeeded in reading news articles.\n")
#分析内容元素相似性的部分
结果,当您运行get_news.py时,链接和标题存储在链接标题中,内容和相似性存储在文章中以及每篇文章的相似性。问题是我只想从其他py文件中加载和使用这些变量,但是当通过import导入变量时,get_news.py的所有内容只执行一次,这需要很长时间。 有没有办法只从另一个文件中执行get_news.py获得的变量?
解决方法
如果您不想在导入文件时运行代码,则将代码放入函数-即。 main()
-并添加
if __name__ == '__main__':
main()
,只有当您直接main()
直接运行此脚本时,它才会在python get_news.py
中运行代码
links = None
titles = None
contents = []
similarities = []
def main():
global links
global titles
links,titles = get_news_daum()
os.chdir("C:/Users/hanbonghun/Desktop/newsscrapping/news")
for i in range(len(links)):
with open(f'{i+1}.txt',"w",encoding="utf-8") as f:
contents.append(get_news_contents_seoulgyeongje(f,links[i]))
# ... code ...
if __name__ == '__main__':
main()
但是如果您不运行代码,则变量将为空。
如果您将变量中的值保存到文件中,则应创建从文件中读取值并直接返回值的函数,然后导入此函数(而不是变量)并使用它
from get_news import read_data_from_file
links,titles,contents,similarities = read_data_from_file()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。