将字符串发送到程序

时间:2016-05-13 07:21:11

标签: python python-3.x distributed-computing

我正在尝试将一个字符串从 program 1 发送到另一个程序 program 2 ,两者都在python 3中 e.g。

#_____________________________________1.py
a = input('Type in a string: ')
#                                     send somehow a string a from this program
#                                     to the second program

我想以某种方式将字符串 a 发送到我的第二个程序,以便打印出a

#_____________________________________2.py
#                                     receive somehow a string from the first
#                                     program and store it in a
print(a)

我该怎么做?

我仍然是一名初学程序员,如果你能帮助我,我会很高兴。

  1. 我需要能够在1.py
  2. 中输入字符串
  3. 然后我需要能够访问我从2.py输入的字符串。
  4. 我必须将它们作为两个单独的文件。
  5. 解答:

    我找到了解决这个问题的方法。

    import subprocess
    username = input()
    subprocess.Popen(['python.exe', 'file.py', username])
    

5 个答案:

答案 0 :(得分:1)

有多种方法可以使用 socket file pipe shared-memory message ,...将字符串从一个进程传输到另一个进程。

作为使用消息的示例, ZeroMQ 提供了一个简单的消息传递库,可以比系统(原始,低级)套接字更智能地执行此操作:
有关详细信息,请查看http://zguide.zeromq.org/

HelloWorld服务器示例:

import time
import zmq

context = zmq.Context()
socket = context.socket(zmq.REP)
socket.bind("tcp://*:5555")

while True:
    #  Wait for next request from client
    message = socket.recv()
    print("Received request: %s" % message)

    #  Do some 'work'
    time.sleep(1)

    #  Send reply back to client
    socket.send(b"World")

HelloWorld客户端示例:

import zmq

context = zmq.Context()

#  Socket to talk to server
print("Connecting to hello world server…")
socket = context.socket(zmq.REQ)
socket.connect("tcp://localhost:5555")

#  Do 10 requests, waiting each time for a response
for request in range(10):
    print("Sending request %s …" % request)
    socket.send(b"Hello")

    #  Get the reply.
    message = socket.recv()
    print("Received reply %s [ %s ]" % (request, message))

使用文件,您可以使用程序A编写文件,然后使用程序B对其进行轮询。

答案 1 :(得分:1)

你有很多方式在两个或N python程序之间进行通信,例如:

  • Socket
  • 数据库 - MySQL,Mongodb,SQL Server等

或者你可以试试ZeroMQ

答案 2 :(得分:0)

# file_1.py
def get_input():
    return input('Type in a string: ')

# file_2.py
from file_1 import get_input

print(get_input())

答案 3 :(得分:0)

两个程序一起通信的最常见方式是通过http,tcp或其他协议。与浏览器(一个程序)与Web服务器(另一个程序)通信的方式相同。

你可以从一个程序发送http请求,第二个必须听取它。

如果您想了解更多信息,请寻找SOA。这有点复杂,所以如果你有任何问题,请问。

答案 4 :(得分:0)

我找到了答案。

import subprocess
username = input()
subprocess.Popen(['python.exe', 'file.py', username], subprocess.creationflags=CREATE_NEW_CONSOLE)