sftp批量删除非空文件夹的方法

您所在的位置:网站首页 ftp怎么删除文件夹 sftp批量删除非空文件夹的方法

sftp批量删除非空文件夹的方法

2024-06-18 22:04| 来源: 网络整理| 查看: 265

最近在使用sftp传输文件的时候,很弱智的在没有打压缩包的情况下,把一个程序文件夹直接put上去了,导致我后续想删除此文件夹的时候异常费劲。

众所周知,sftp中删除文件夹命令“rmdir”要求删除的目标文件夹必须为空才可以成功删除,而由于我上传的程序文件夹中文件目录异常繁杂,甚至还有一些隐藏文件夹,这样导致删除非常繁琐,在网上找了好久都没有合适的方法,后来终于参考了一个python脚本,改造后成功删除了这个文件夹,现在记录如下。

注:python脚本中sftp的登录方式为非密钥登陆,如果要用密钥登陆,可以在网上搜索一下相关方法。

import os import paramiko from stat import S_ISDIR # 假设sftp登陆命令为“sftp -P 22 [email protected]” # 设置登录服务器、端口、用户名和密码 server ="server.com" port = 22 username = "name" password = "******" #### main function #### trans = paramiko.Transport((server, port)) trans.connect(username=username, password=password) sftp= paramiko.SFTPClient.from_transport(trans) print "sftp connect succeed!" def isdir(path): try: return S_ISDIR(sftp.stat(path).st_mode) except IOError: return False def rm_sftp(path): files = sftp.listdir(path=path) for f in files: filepath = os.path.join(path, f) if isdir(filepath): rm_sftp(filepath) else: sftp.remove(filepath) print path sftp.rmdir(path) if __name__ == "__main__": # 替换成自己想要删除的文件夹路径“/folder/path/to/remove”,可在sftp中用“pwd”查看 rm_sftp("/folder/path/to/remove") trans.close() #### end ####



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3