如何在python中的两台连接的计算机之间传输文件?

时间:2012-01-04 04:03:35

标签: python file sockets

我不知道之前是否已经回答过这个问题(我在网上看了但找不到),但我如何通过网络将文件(如果可能的话.exe)发送到另一台连接到网络?我试过套接字,但我只能发送字符串,我试图学习ftplib,但我根本不理解它,或者如果ftp甚至是我正在寻找的东西,所以我完全停顿了。任何输入都值得赞赏(如果有人可以解释FTP,就更像是套接字吗?我见过的所有示例都没有客户端可以连接的服务器程序。)

4 个答案:

答案 0 :(得分:7)

一个。我有时会使用SimpleHTTPServer

python -m SimpleHTTPServer

...将在端口8000上为当前目录中的文件提供服务。在另一台计算机上打开您的Web浏览器并下载您想要的任何内容。

要知道您的计算机的IP地址,您可以使用(在Ubuntu中)ifconfig,例如:

$ ifconfig
enp0s31f6 Link encap:Ethernet  HWaddr xx:xx:xx:xx:xx:xx
          inet addr:10.0.0.3  Bcast:10.0.0.255  Mask:255.255.255.0

然后,在另一台计算机中,您将浏览器发送到: http://10.0.0.3:8000

B中。如果您启用了SSH,则可以使用paramiko进行连接,并根据需要进行SFTP传输。

答案 1 :(得分:5)

发送方的一些简单示例代码:

if os.path.exists(df):
  with open(df, 'rb') as f:
    packet = f.read(blocksize)

    while packet != '':
      conn.send(packet)

      packet = f.read(blocksize)

其中:

df = 'path/to/data/file'
blocksize = 8192 # or some other size packet you want to transmit.  
                 # Powers of 2 are good.
conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

答案 2 :(得分:3)

查看paramiko。它可以做scp和sftp。

http://www.lag.net/paramiko/

答案 3 :(得分:3)

ZeroMQ有助于替换套接字。

您可以在一个命令中发送整个文件。

ZMQ'派对'可以用任何主要语言编写,对于给定的ZMQ驱动的软件,它写入的另一端并不重要。

从他们的网站:

  

它为您提供了可以跨越各种方式传输整个消息的套接字   传输,进程间,TCP和多播等传输。您可以   将套接字N-to-N与fanout,pub-sub,task等模式连接起来   分发和请求回复。