Как импортировать только переменные из других файлов py?

#python #web-scraping #import

#python #очистка веб-страниц #импорт

Вопрос:

Привет, я пытаюсь реализовать аналогичную рекомендацию документа и функцию поиска, очищая новостные статьи. Ниже приведен файл 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() ссылки и заголовки сохраняются в виде списка в переменных links и titles.

 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 из другого файла?

Комментарии:

1. если вы не будете запускать код, то переменная может быть пустой, потому что код не может сохранить эти значения в переменных — код должен сохранить его в файле, и вам придется прочитать его из этого файла. Если вы не хотите запускать код в файле, поместите его в function — ie. main() и используйте if __name__ == "__main__": main() для запуска его только при непосредственном запуске скрипта, а не при импорте.

Ответ №1:

Если вы не хотите запускать код при импорте файла, поместите код в function — ie. 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()
  

Комментарии:

1. Теперь я проверил ответ. Извините за опоздание. Ответ был очень полезен для меня. Большое вам спасибо!