Python 代替 xftp 从 Linux 服务器下载文件的操作方法

 更新时间:2024年06月25日 09:29:28   作者:奔向理想的星辰大海  
我们经常需要从Linux服务器上同步文件,但是xftp等工具都需要注册了,这里用免费的Python代码来下载文件,还可以扩展更多的自定义用法,这篇文章主要介绍了Python 代替 xftp 从 Linux 服务器下载文件,需要的朋友可以参考下

我们经常需要从Linux服务器上同步文件,但是xftp等工具都需要注册了,这里用免费的Python代码来下载文件,还可以扩展更多的自定义用法。

准备工作

本文需要使用paramiko库,可以使用以下命令进行安装:

pip install paramiko

下载文件

先创建一个SSHClient对象,并设置缺失主机密钥的策略为自动添加,然后使用connect方法连接到服务器。需要提供服务器IP地址、端口号、用户名和密码。连接成功后,打开SFTP通道,使用open_sftp方法创建SFTP对象。SFTP是SSH协议的一部分,用于在服务器和本地之间传输文件。使用SFTP对象的open方法打开要下载的远程文件,并指定打开模式为只读。假设要下载的文件是UTF-8编码的文本文件,进行编码转换。下面是一个使用paramiko库从Linux服务器上下载文件的示例代码:

import paramiko  
ssh = paramiko.SSHClient()  
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())  
ssh.connect(hostname='your_server_ip', port=22, username='your_username', password='your_password')  
sftp = ssh.open_sftp()  
remote_file = sftp.open('/path/to/remote/file', 'r')  
remote_file.read().decode('utf-8').encode('gbk')  

在上面的代码中,将your_server_ip替换为您的Linux服务器的IP地址,your_username替换为用户名,your_password替换为密码,/path/to/remote/file替换为要下载的远程文件的路径,/path/to/local/file替换为要保存的本地文件的路径。

保存文件

在本地创建一个文件对象,使用open方法打开,指定写入模式,并将远程文件的内容写入本地文件。最后,关闭所有的文件对象、SFTP对象和SSH连接。

local_file.write(remote_file.read().decode('utf-8'))  
remote_file.close()  
local_file.close()  
sftp.close()  
ssh.close()

文件是否存在

为了保证每次下载都是最新,如果存在就删除后创建新文件,如果不存在就创建新文件。

# 检查文件是否存在,如果不存在则创建  
if not os.path.exists('/path/to/local/file'):  
    with open('/path/to/local/file', 'w') as f:  
        pass  # 创建空文件  
# 打开本地文件,指定追加模式  
local_file = open('/path/to/local/file', 'a')  

使用os.path.exists函数检查文件是否存在,如果不存在则创建空文件。在打开本地文件时,指定模式为追加模式('a'),这样可以在已有内容的基础上追加新内容。

由于windows中文件是进程独占,可能未释放,会报错:

    os.remove(local_path)
PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。

可以使用文件对象的truncate()方法。该方法将文件截断为指定的大小,若文件大小为零,所有内容都将被删除。

with open('file.txt', 'w') as file:  
    file.truncate(0)

使用with语句打开文件file.txt,并将文件对象分配给变量file,调用truncate(0)方法以将文件截断为零,删除文件中的所有内容。此方法仅适用于文本文件。如果要清除二进制文件的内容,可以使用类似的方法,但是需要将文件对象打开为二进制模式(例如'wb')。

到此这篇关于Python 代替 xftp 从 Linux 服务器下载文件的文章就介绍到这了,更多相关Python Linux 服务器下载文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Starship定制shell提示符实现信息自由

    Starship定制shell提示符实现信息自由

    这篇文章主要介绍了Starship定制shell提示符的实现,让你需要的所有信息触手可及,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • python+opencv实现的简单人脸识别代码示例

    python+opencv实现的简单人脸识别代码示例

    这篇文章主要介绍了图像识别 python+opencv的简单人脸识别,具有一定参考价值,需要的朋友可以参考下。
    2017-11-11
  • Python内置模块hashlib、hmac与uuid用法分析

    Python内置模块hashlib、hmac与uuid用法分析

    这篇文章主要介绍了Python内置模块hashlib、hmac与uuid用法,结合实例形式较为详细的分析了hashlib、hmac与uuid模块的概念、功能及简单使用方法,需要的朋友可以参考下
    2018-02-02
  • 基于python实现可视化生成二维码工具

    基于python实现可视化生成二维码工具

    这篇文章主要介绍了基于python实现可视化生成二维码工具,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • 基于Python编写一个有趣的年会抽奖系统

    基于Python编写一个有趣的年会抽奖系统

    这篇文章主要为大家详细介绍了如何使用Python编写一个简易的抽奖系统,顺便帮助大家巩固一下对Python语法和框架的理解,感兴趣的小伙伴可以了解下
    2023-12-12
  • python使用技巧-查找文件 

    python使用技巧-查找文件 

    这篇文章主要分享的是python使用技巧查找文件,下面我们就来介绍针对python查找文件的相关内容,需要的小伙伴可以参考一下
    2022-02-02
  • Python "手绘风格"数据可视化方法实例汇总

    Python "手绘风格"数据可视化方法实例汇总

    这篇文章主要给大家介绍了关于Python "手绘风格"数据可视化方法实现的相关资料,本文分别给大家带来了Python-matplotlib手绘风格图表绘制、Python-cutecharts手绘风格图表绘制以及Python-py-roughviz手绘风格图表绘制,需要的朋友可以参考下
    2022-02-02
  • Python 通过分隔符分割文件后按特定次序重新组合的操作

    Python 通过分隔符分割文件后按特定次序重新组合的操作

    这篇文章主要介绍了Python 通过分隔符分割文件后按特定次序重新组合的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • Python聚类算法之基本K均值实例详解

    Python聚类算法之基本K均值实例详解

    这篇文章主要介绍了Python聚类算法之基本K均值运算技巧,结合实例形式较为详细的分析了基本K均值的原理与相关实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • python回调函数的使用方法

    python回调函数的使用方法

    在计算机程序设计中,回调函数,或简称回调(Callback),是指通过函数参数传递到其它代码的,某一块可执行代码的引用。这一设计允许了底层代码调用在高层定义的子程序
    2014-01-01

最新评论