繁体   English   中英

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

[英]Pass data from python script to another python script

我试图使服务器和客户端的程序没有套接字,因为我不能使用互联网来传递数据。 我尝试使用pipe stdin进行操作,但无法进行该操作...我有什么选择?

服务器:

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()

您的任务称为进程间通信或IPC。 Python提供了多种方法来实现这一目标。

最好的方法可能是实际使用套接字。 如果将套接字绑定到本地主机地址(127.0.0.1),则所有通信都通过计算机上的虚拟网络适配器(环回适配器)进行。 实际上没有数据通过网络传递。

另一种与平台更相关的方式是使用unix套接字(基本上是将文件状实体作为地址的套接字,权限决定谁可以对其进行读写)或使用命名管道(基本上是不存储信息的虚拟文件,像管道一样穿过它们。

内存映射区域的使用要复杂得多,通常需要一些其他机制来同步数据状态,但是它们会以极高的速度和随机访问功能为您带来回报。 您可能不应该将此用于服务器/客户端程序...

PS:如果您要添加代码并展开“无法完成该工作”以完整地说明您的操作,那么StackOverflow会更好。

您有许多选择,套接字(最简单的一种)不一定使数据通过Internet传递,即使您有一些限制,管道或共享内存(困难的一种)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM