将数据从 python 脚本传递到另一个 python 脚本

我试图使服务器和客户端成为没有套接字的类似程序,因为我无法使用互联网来传递数据。我尝试使用管道标准输入,但我无法做到这一点......我有什么选择?


服务器:


def main():

try:

    res = ""

    while res != "exit":

        res = input()

        print("\n", res, "\n")

except EOFError as e:

    print(e)


if __name__ == "__main__":

    main()

客户:


import subprocess

import os

import sys


def main():

    p = subprocess.Popen(['python', 'b.py'], stdin=subprocess.PIPE)

    res = ""

    while res != "exit":

        res = os.fsencode(input(">> "))

        p.stdin.write(res)


if __name__ == "__main__":

    main()


慕的地8271018
浏览 271回答 2
2回答

SMILET

您的任务称为进程间通信或 IPC。Python 提供了多种方法来实现这一点。可能最好的方法是实际使用套接字。如果您将套接字绑定到本地主机地址 (127.0.0.1),则所有通信都通过您机器上的虚拟网络适配器(环回适配器)进行。实际上没有数据通过网络传递。另一种更依赖于平台的方法是使用 unix 套接字(基本上是以类文件实体作为地址的套接字,权限决定谁可以读取或写入它)或使用命名管道(基本上是不存储信息的虚拟文件,就像管道一样穿过它。它们非常繁琐)。内存映射区域使用起来要复杂得多,并且通常需要一些其他机制来同步数据的状态,但它们以最高的速度和随机访问功能奖励您。您可能不应该将它用于您的服务器/客户端程序......PS:StackOverflow 会更好,如果您添加您的代码并将“无法使其工作”扩展到您的操作的完整解释。

拉莫斯之舞

你有很多选择,套接字(最简单的一个)不一定是数据通过互联网,只要你有一些限制、管道或共享内存(困难的一个)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python