当前位置:优草派 > 问答 > Python问答

python怎么传送文件?

标签: Python  Python  作者: acid001

回答:

Python是一种高级编程语言,它具有简单易学、语法简洁、功能强大、拥有丰富的第三方库等特点,因此在很多领域都得到了广泛的应用,包括文件传输。

在实际应用中,我们常常需要将文件从一台计算机传输到另一台计算机。下面从多个角度分析Python如何传送文件。

1. 使用socket库传输文件

Python的socket库提供了网络编程接口,可以用于实现文件传输。具体步骤如下:

1)在发送端创建一个socket对象,指定IP地址和端口号。

2)将要传输的文件进行二进制读取,然后通过socket发送到接收端。

3)在接收端创建一个socket对象,指定IP地址和端口号。

4)接收端通过socket接收发送端发送过来的文件,然后将文件写入本地磁盘。

示例代码如下:

发送端:

```

import socket

def send_file(filename, ip, port):

# 创建socket对象

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 连接接收端

sock.connect((ip, port))

# 以二进制方式读取文件

with open(filename, 'rb') as f:

data = f.read()

# 发送文件

sock.sendall(data)

# 关闭socket连接

sock.close()

if __name__ == '__main__':

filename = 'test.txt'

ip = '192.168.1.2'

port = 9999

send_file(filename, ip, port)

```

接收端:

```

import socket

def receive_file(filename, ip, port):

# 创建socket对象

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 绑定IP和端口号

sock.bind((ip, port))

# 监听socket连接

sock.listen(1)

# 接收连接

conn, addr = sock.accept()

# 接收数据

data = conn.recv(1024)

# 写入文件

with open(filename, 'wb') as f:

f.write(data)

# 关闭socket连接

conn.close()

sock.close()

if __name__ == '__main__':

filename = 'test.txt'

ip = '192.168.1.2'

port = 9999

receive_file(filename, ip, port)

```

2. 使用paramiko库传输文件

除了socket库,Python的paramiko库也可以用于实现文件传输。paramiko库是Python编写的SSH协议的实现,它提供了SSH、SCP、SFTP等协议的客户端和服务端的实现,可以用于远程操作和文件传输。

具体步骤如下:

1)在发送端创建一个SSHClient对象,指定IP地址、端口号、用户名和密码。

2)通过SSHClient对象打开SFTP会话,上传文件到接收端。

3)在接收端创建一个SSHClient对象,指定IP地址、端口号、用户名和密码。

4)通过SSHClient对象打开SFTP会话,下载发送端上传的文件。

示例代码如下:

发送端:

```

import paramiko

def send_file(filename, ip, username, password):

# 创建SSHClient对象

ssh = paramiko.SSHClient()

# 自动添加主机密钥

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 连接接收端

ssh.connect(ip, username=username, password=password)

# 打开SFTP会话

sftp = ssh.open_sftp()

# 上传文件

sftp.put(filename, filename)

# 关闭SFTP会话和SSH连接

sftp.close()

ssh.close()

if __name__ == '__main__':

filename = 'test.txt'

ip = '192.168.1.2'

username = 'user'

password = 'password'

send_file(filename, ip, username, password)

```

接收端:

```

import paramiko

def receive_file(filename, ip, username, password):

# 创建SSHClient对象

ssh = paramiko.SSHClient()

# 自动添加主机密钥

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 连接发送端

ssh.connect(ip, username=username, password=password)

# 打开SFTP会话

sftp = ssh.open_sftp()

# 下载文件

sftp.get(filename, filename)

# 关闭SFTP会话和SSH连接

sftp.close()

ssh.close()

if __name__ == '__main__':

filename = 'test.txt'

ip = '192.168.1.2'

username = 'user'

password = 'password'

receive_file(filename, ip, username, password)

```

3. 使用flask库传输文件

除了以上两种方法,Python的flask库也可以用于文件传输。flask是一种轻量级的Web应用框架,它提供了路由、模板、请求和响应等功能,可以用于实现文件上传和下载。

具体步骤如下:

1)在发送端创建一个flask应用,指定文件上传的路由和方法。

2)在接收端创建一个flask应用,指定文件下载的路由和方法。

3)发送端通过POST请求上传文件到接收端。

4)接收端通过GET请求下载上传的文件。

示例代码如下:

发送端:

```

from flask import Flask, request

app = Flask(__name__)

@app.route('/upload', methods=['POST'])

def upload_file():

file = request.files['file']

file.save(file.filename)

return 'File uploaded successfully'

if __name__ == '__main__':

app.run(host='0.0.0.0', port=5000)

```

接收端:

```

from flask import Flask, send_file

app = Flask(__name__)

@app.route('/download', methods=['GET'])

def download_file():

return send_file('test.txt', as_attachment=True)

if __name__ == '__main__':

app.run(host='0.0.0.0', port=5000)

```

以上三种方法都可以实现Python文件传输,选择哪一种方法取决于具体的应用场景。

TOP 10
  • 周排行
  • 月排行