📅  最后修改于: 2023-12-03 15:19:07.267000             🧑  作者: Mango
在Python中,我们可以使用各种库和模块来实现文件传输。下面是一些主要的选项:
使用Python内置的sockets模块,我们可以轻松地创建客户端和服务器,以在网络上传输文件。
import socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 8000))
server_socket.listen(1)
print('Listening on port 8000.')
while True:
conn, addr = server_socket.accept()
print('Connection from {0}'.format(addr))
with open('received_file.txt', 'wb') as f:
while True:
data = conn.recv(1024)
if not data:
break
f.write(data)
conn.close()
print('File received.')
import socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(('localhost', 8000))
with open('file_to_send.txt', 'rb') as f:
while True:
data = f.read(1024)
if not data:
break
client_socket.sendall(data)
client_socket.close()
print('File sent.')
Paramiko是一个Python库,它提供了SSH协议的客户端和服务器功能。使用Paramiko,我们可以在本地和远程计算机之间传输文件。
import paramiko
ssh_server = paramiko.Transport(('localhost', 22))
ssh_server.add_server_key(paramiko.RSAKey.generate(2048))
ssh_server.start_server()
sftp_server = paramiko.SFTPServer(ssh_server, None)
print('Listening on port 22.')
while True:
conn, addr = ssh_server.accept()
sftp_server.serve_client(conn)
import paramiko
ssh_client = paramiko.Transport(('localhost', 22))
ssh_client.start_client()
ssh_client.auth_password('username', 'password')
sftp_client = ssh_client.open_sftp()
sftp_client.put('file_to_send.txt', 'remote_path/to/receive/file.txt')
sftp_client.close()
ssh_client.close()
print('File sent.')
Python也有内置的FTP模块,用于在本地和远程计算机之间传输文件。下面是一个简单的例子:
from pyftpdlib import servers, handlers
address = ('', 21)
server = servers.FTPServer(address, handlers.FTPHandler)
server.serve_forever()
from ftplib import FTP
ftp = FTP()
ftp.connect('localhost', 21)
ftp.login('username', 'password')
with open('file_to_send.txt', 'rb') as f:
ftp.storbinary('STOR remote_file_name.txt', f)
ftp.quit()
print('File sent.')
这里只是列举了一些主要的选项,当然还有很多其他的库和模块可以用于文件传输,如SCP、SFTP、TFTP等等。在实际场景中,我们需要根据具体要求来选择合适的方法。