python - 如何仅从其他 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()函数执行时,将抓取的文档的标题和内容保存在特定的文件夹中,并将每个内容作为一个列表保存在contents变量中。
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()
推荐阅读
- java - 尝试从 Java 中存在模式偏差的数千个 JSON 文件中提取数据
- c# - 序列化后的JSON有空值
- c# - 如何为继承另一个类的泛型类编写 nunit 测试用例(c#)
- c# - Unity - 关于向量计算的数学问题
- swift - WatchKit HealthKit - 当以两种不同的方式访问时,时间跨度的步长范围是不同的
- html - 使用scss和html根据背景颜色动态更改进度条的字体颜色
- r - 单列或单行中的多列数据
- java - Spring从具有另一个签名的方法中驱逐缓存
- python - 将列表项添加到列 csv
- json - 如何在swift中根据JSON参数值删除带有按钮的CollectionView单元格