python 实现从服务器下载文件
创始人
2025-01-18 08:02:55
0

python 实现从服务器下载文件

文章目录

  • python 实现从服务器下载文件
    • 1、使用python paramiko库
    • 2、使用Python wget库
    • 3、使用Python urllib库
    • 4、使用subprocess.run()执行scp命令
    • 5、使用os.system() 执行scp命令

通过python编程,实现从服务器下载文件方法有很多,这里列举常用的几种方法:

  • 使用python paramiko库

  • 使用python wget库

  • 使用python urllib库

  • 使用subprocess.run()执行scp命令

  • 使用os.system() 执行scp命令

1、使用python paramiko库

 import inspect import paramiko  remote_ip = "192.168.3.211"  remote_port = 22  remote_username = "root"  remote_password = "123456"  print(f"Line {inspect.currentframe().f_lineno}: username: {remote_username}, password: {remote_password}")  # 创建SSHClient对象 ssh = paramiko.SSHClient()  # 允许连接不在known_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())  # 连接到远程服务器 ssh.connect(hostname=remote_ip, username=remote_username, password=remote_password)  sftp = ssh.open_sftp()  filename = "main.txt"  print(f'Line {inspect.currentframe().f_lineno}: 正在下载文件...') sftp.get("/home/main.txt", filename)  sftp.close() ssh.close()  print(f"Line {inspect.currentframe().f_lineno}: 下载完成") 

2、使用Python wget库

Python的wget库是一个用于下载文件的库,支持从FTP服务器上下载文件。使用Python wget库下载文件的步骤如下:

1.安装wget库

pip install wget 

2.下载文件

import wget  url = "ftp://username:password@ftp.example.com/data/example.txt"  filename = wget.download(url) 

3、使用Python urllib库

Python的urllib库可以用于下载文件,包括从FTP服务器上下载文件。使用Python urllib库下载文件的步骤如下:

1.导入urllib库

import urllib.request 

2.创建FTP URL

url = "ftp://username:password@ftp.example.com/data/example.txt" 

3.下载文件

filename = "example.txt"  urllib.request.urlretrieve(url, filename) 

4、使用subprocess.run()执行scp命令

import os import sys import inspect import paramiko import subprocess  remote_ip = "192.168.11.234" remote_port = 22  remote_username = "root"  remote_password = "123456"  # 创建SSHClient对象 ssh = paramiko.SSHClient()  # 允许连接不在known_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())  # 连接到远程服务器 ssh.connect(hostname=remote_ip, username=remote_username, password=remote_password)   # 输入本地文件的路径,并且判断是否存在 while True:     local_folder = input('请输入保存到本地的路径: ./\n')     # 判断文件是否存在     if os.path.exists(local_folder):         break  # 如果文件存在,则跳出循环     else:         print('\033[31m' +               f'文件 {local_folder} 不存在,请重新输入。' + '\033[0m')  local_folder = r"{}".format(local_folder) remote_folder = input('请输入远程服务器端下载的文件的路径: '                       'home/main.txt \n')  try:     print('正在下载文件...')      print(f"Line {inspect.currentframe().f_lineno}: username  : {ssh.get_transport().get_username()}")     print(f"Line {inspect.currentframe().f_lineno}: host_ip   : {ssh.get_transport().getpeername()[0]}")     print(f"Line {inspect.currentframe().f_lineno}: host_port : {ssh.get_transport().getpeername()[1]}")      # 要传输的文件路径     local_file_path = local_folder     remote_file_path = remote_folder      # 执行scp命令     result = subprocess.run(['scp', f'{ssh.get_transport().get_username()}@{ssh.get_transport().getpeername()[0]}:{remote_file_path}', local_file_path])     # result = subprocess.run(['scp', local_file_path, f'{ssh.get_transport().get_username()}@{ssh.get_transport().getpeername()[0]}:{remote_file_path}'])     print(f"Line {inspect.currentframe().f_lineno}: 输出结果为, result : ", result)     # print(f"Line {inspect.currentframe().f_lineno}: 输出结果为, result.decode() :", result.decode())  except Exception as e:     print('func:{}(),line:{},'.format(sys._getframe().f_code.co_name, sys._getframe().f_lineno), end="")     print('\033[31m' + f'文件下载失败,报错信息为: {e}' + '\033[0m') 

5、使用os.system() 执行scp命令

import os import sys import inspect import paramiko import subprocess  remote_ip = "192.168.3.234"  remote_port = 22   remote_username = "root"   remote_password = "123456"  # 创建SSHClient对象 ssh = paramiko.SSHClient()  # 允许连接不在known_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())  # 连接到远程服务器 ssh.connect(hostname=remote_ip, username=remote_username, password=remote_password)   # 输入本地文件的路径,并且判断是否存在 while True:     local_folder = input('请输入保存到本地的路径: ./\n')     # 判断文件是否存在     if os.path.exists(local_folder):         break  # 如果文件存在,则跳出循环     else:         print('\033[31m' +               f'文件 {local_folder} 不存在,请重新输入。' + '\033[0m')  local_folder = r"{}".format(local_folder) remote_folder = input('请输入远程服务器端下载的文件的路径: '                       '/home/main.txt \n')  try:     print('正在下载文件...')      print(f"Line {inspect.currentframe().f_lineno}: username  : {ssh.get_transport().get_username()}")     print(f"Line {inspect.currentframe().f_lineno}: host_ip   : {ssh.get_transport().getpeername()[0]}")     print(f"Line {inspect.currentframe().f_lineno}: host_port : {ssh.get_transport().getpeername()[1]}")      # 要传输的文件路径     local_file_path = local_folder     remote_file_path = remote_folder      # 执行scp命令     result = subprocess.run(['scp', f'{ssh.get_transport().get_username()}@{ssh.get_transport().getpeername()[0]}:{remote_file_path}', local_file_path])     # result = subprocess.run(['scp', local_file_path, f'{ssh.get_transport().get_username()}@{ssh.get_transport().getpeername()[0]}:{remote_file_path}'])     print(f"Line {inspect.currentframe().f_lineno}: 输出结果为, result : ", result)     # print(f"Line {inspect.currentframe().f_lineno}: 输出结果为, result.decode() :", result.decode())  except Exception as e:     print('func:{}(),line:{},'.format(sys._getframe().f_code.co_name, sys._getframe().f_lineno), end="")     print('\033[31m' + f'文件下载失败,报错信息为: {e}' + '\033[0m')  

相关内容

热门资讯

一分钟内幕!科乐吉林麻将系统发... 一分钟内幕!科乐吉林麻将系统发牌规律,福建大玩家确实真的是有挂,技巧教程(有挂ai代打);所有人都在...
一分钟揭秘!微扑克辅助软件(透... 一分钟揭秘!微扑克辅助软件(透视辅助)确实是有挂(2024已更新)(哔哩哔哩);1、用户打开应用后不...
五分钟发现!广东雀神麻雀怎么赢... 五分钟发现!广东雀神麻雀怎么赢,朋朋棋牌都是是真的有挂,高科技教程(有挂方法)1、广东雀神麻雀怎么赢...
每日必看!人皇大厅吗(透明挂)... 每日必看!人皇大厅吗(透明挂)好像存在有挂(2026已更新)(哔哩哔哩);人皇大厅吗辅助器中分为三种...
重大科普!新华棋牌有挂吗(透视... 重大科普!新华棋牌有挂吗(透视)一直是有挂(2021已更新)(哔哩哔哩)1、完成新华棋牌有挂吗的残局...
二分钟内幕!微信小程序途游辅助... 二分钟内幕!微信小程序途游辅助器,掌中乐游戏中心其实存在有挂,微扑克教程(有挂规律)二分钟内幕!微信...
科技揭秘!jj斗地主系统控牌吗... 科技揭秘!jj斗地主系统控牌吗(透视)本来真的是有挂(2025已更新)(哔哩哔哩)1、科技揭秘!jj...
1分钟普及!哈灵麻将攻略小,微... 1分钟普及!哈灵麻将攻略小,微信小程序十三张好像存在有挂,规律教程(有挂技巧)哈灵麻将攻略小是一种具...
9分钟教程!科乐麻将有挂吗,传... 9分钟教程!科乐麻将有挂吗,传送屋高防版辅助(总是存在有挂)1、完成传送屋高防版辅助透视辅助安装,帮...
每日必看教程!兴动游戏辅助器下... 每日必看教程!兴动游戏辅助器下载(辅助)真是真的有挂(2025已更新)(哔哩哔哩)1、打开软件启动之...