@nevantain

Почему файл не видит переменную из другого файла?

Bot.py
import parser
from aiogram import Bot, Dispatcher, executor, types
import logging
from Config import TOKEN
import asyncio

VkId = None
logging.basicConfig(level=logging.INFO)

bot = Bot(token=TOKEN)
dp = Dispatcher(bot)

@dp.message_handler(commands=['start'], content_types=["text"])
async def InputLinkVk(message: types.Message):
    await message.reply("Введите ID пользователя во ВК")
    message.text = VkId

@dp.message_handler(content_types=["text"])
async def ParsingVK(message: types.Message):  # Доделать
    await message.reply(div)


if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)

parser.py
import vk_api
import Bot
import requests
from bs4 import BeautifulSoup
import lxml

VkSession = vk_api.VkApi('', '')
VkSession.auth()

vk = 'https://vk.com/'
VKID = Bot.VkId

headers = {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:87.0) Gecko/20100101 Firefox/87.0'
}

req = requests.get(vk, headers = headers)
src = req.text

soup = BeautifulSoup(src, "lxml")

div = soup.find_all('div', class_ = "labeled")

Ошибка возникает там где пытаюсь напечатать текст переменной "div", пишет что мол нету такой переменной, что делать?
  • Вопрос задан
  • 93 просмотра
Пригласить эксперта
Ответы на вопрос 2
@dmshar
Внутри ParsingVK ваша div является глобальной переменной. Мало того, она тут явно передаётся в вызываемый метод reply в качестве параметра. Это значит, как минимум ее так надо определить .
Обращаю внимание, в Python глобальная переменная описывается внутри функции, где она используется (а не где описывается, как в С++)
И еще - на будущее. Если у вас в коде возникла ошибка, не надо заставлять других гадать, какая ошибка и где возникла - прикладывайте сообщения об ошибке в явном виде. Потому как "что мол нету такой переменной" - нет такого сообщения интерпретатора, это лишь ваша интерпретация, а разных причин тому может быть как минимум пол десятка .
Ответ написан
@alegzz
к переменной из другого модуля нужно обращаться с использованием названия модуля или импортировать явно:

print(parser.div)

или
from parser import div
print(div)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы