是否可以使用pysftp模块删除包含某些内容的目录?

时间:2017-05-24 07:06:44

标签: python python-2.7 python-3.x sftp pysftp

  

我正在使用pysftp模块创建备份脚本。我可以上传   并下载文件。当我试图删除一些目录时   内容我有例外。

     

这是我试过的

con = pysftp.Connection('192.168.0.40',username='root',password='clado123')
con.chdir('/root/backup')
con.pwd
con.listdir()
['data', 'test']
data - directory is not empty.
test - directory is empty.
con.rmdir('test')
con.listdir()
['data']
con.rmdir('data')

OSError:失败

  

任何人都可以建议我解决这个问题的方法吗?

3 个答案:

答案 0 :(得分:2)

我找到了办法。在pysftp连接对象中有一个名为'execute'的方法。我们可以使用此方法在远程服务器上执行命令。

con.execute('rm -rf /root/backup/data')
con.listdir()
[]

答案 1 :(得分:1)

答案 2 :(得分:0)

remove删除目录中的所有文件,然后使用rmdir删除空目录。为我工作。

def clean_dir(sftp, dir, files):
    assert sftp.isdir(str(dir)), "Outbox does not exist!"
    assert files.is_dir(), "Source directory does not exist!"
    for capsule in list(files.iterdir()):
        target = dir / capsule.name
        assert sftp.exists(str(target)), "Target files does not exist!"
        sftp.remove(str(target))
        assert not sftp.exists(str(target)), "Removed file still exists!"