1

我正在使用 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')

操作系统错误:失败

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

4

3 回答 3

7

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

con.execute('rm -rf /root/backup/data')
con.listdir()
[]
于 2017-05-24T07:27:53.003 回答
1

rmdir(remotepath)在文档http://pysftp.readthedocs.io/en/release_0.2.8/pysftp.html#pysftp.Connection.rmdir中找到

于 2017-05-24T07:12:50.967 回答
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!"
于 2018-10-02T10:43:50.513 回答