Я уже несколько часов борюсь с проблемой в моем проекте на python.
Ситуация следующая:
У меня есть скрипт A.py и скрипт B.py
**Script A.py:**
#in this script the function def main() is running
def main():
#some coding in here
x=str(body)#then i assign the string of the variable body to a new variable x
#some other coding in here
if __name__=='__main__':
main()
НАПОМИНАНИЕ: это псевдокод, объясняющий мою борьбу (скрипт как автономный модуль работает правильно)!
Теперь у меня есть скрипт B.py (в той же папке)
**Script B.py** #in this script i try to run Script A.py and assign the value of variable x to a new variable in order to do furhter processing with it.
import A
A.main() # When importing the module and excuting its main() function by running B.py I see the values of variable x appearing on my screen
ВОПРОС : Как мне теперь присвоить значение переменной x новой переменной, чтобы я мог выполнить дальнейшую обработку с ней в B.py? Это вообще возможно?
Причина после вызова основной функции A.py другие операции не выполняются.
Пожалуйста, учтите, что я относительно новичок в программировании нескольких модулей.
Буду очень рад любой помощи.
Заранее большое спасибо
С уважением
Slin
Хорошо, я попробовал ваши подходы, но все еще не получил желаемого результата.
A.py - скрипт подписки AMQP (https://www.rabbitmq.com/tutorials/tutorial-one-python.html) (см. Ниже):
import pika
credentials = pika.PlainCredentials('admin', 'admin')
connection = pika.BlockingConnection(pika.ConnectionParameters('Ipaddress',
5672,
'/',
credentials))
#connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
channel.exchange_declare(exchange='logs',
exchange_type='fanout')
result = channel.queue_declare(exclusive=True)
queue_name = result.method.queue
channel.queue_bind(exchange='logs',
queue=queue_name)
print(' [*] Waiting for logs. To exit press CTRL+C')
def callback(ch, method, properties, body):
x = str(body)
print str(x)
channel.basic_consume(callback,
queue=queue_name,
no_ack=True)
channel.start_consuming()
if __name__ == '__main__':
main()
B.py:
import pika
import A
A.main()
С подходами до сих пор я получаю то же самое, что показано с кодировкой выше.
Я хотел бы присвоить x (какие значения можно изменить, когда A запущен) новой переменной в B.py, чтобы выполнить некоторую обработку, чтобы впоследствии опубликовать ее с помощью аналогичного сценария A.py.
При выполнении B.py я получаю:
[*] Waiting for logs. To exit press CTRL+C
['20'] #this is the string of variable x from script A
Теперь я хочу присвоить это ['20'] новой переменной с B.py .. но сценарий B.py продолжает выполнять A.main () (что логично, потому что это цикл).
Спасибо за вашу поддержку.
С уважением