paramiko能否实现从上次中断点继续上传的功能
can paramiko has the function to implememt uploading continue from the point from last interruption
我需要实现一个上传功能,它可以通过 sftp 从上次中断的点继续。
我正在尝试 paramiko。但我不喜欢任何关于此的例子。有人可以给我一些建议吗?
此致
SFTP.open(mode='a')
以 appending 模式打开文件。所以首先你可以调用 SFTP.stat()
来获取文件的当前大小(在远程端)然后 open(mode='a')
它并向它附加新数据。
根据whjm的建议,我写了下面的代码,效果很好。希望能帮助到更多人:
if filename in file_list:
stat = sftp.stat(remot_dir + filename)
f_local = open(local_dir + filename)
f_local.seek(stat.st_size)
f_remote = sftp.open(remot_dir + filename, "a")
tmp_buffer = f_local.read(100000)
while tmp_buffer:
f_remote.write(tmp_buffer)
tmp_buffer = f_local.read(100000)
f_remote.close()
f_local.close()
else:
f_local = open(local_dir + filename)
f_remote = sftp.open(remot_dir + filename, "w")
tmp_buffer = f_local.read(100000)
while tmp_buffer:
f_remote.write(tmp_buffer)
tmp_buffer = f_local.read(100000)
f_remote.close()
f_local.close()
我需要实现一个上传功能,它可以通过 sftp 从上次中断的点继续。
我正在尝试 paramiko。但我不喜欢任何关于此的例子。有人可以给我一些建议吗?
此致
SFTP.open(mode='a')
以 appending 模式打开文件。所以首先你可以调用 SFTP.stat()
来获取文件的当前大小(在远程端)然后 open(mode='a')
它并向它附加新数据。
根据whjm的建议,我写了下面的代码,效果很好。希望能帮助到更多人:
if filename in file_list:
stat = sftp.stat(remot_dir + filename)
f_local = open(local_dir + filename)
f_local.seek(stat.st_size)
f_remote = sftp.open(remot_dir + filename, "a")
tmp_buffer = f_local.read(100000)
while tmp_buffer:
f_remote.write(tmp_buffer)
tmp_buffer = f_local.read(100000)
f_remote.close()
f_local.close()
else:
f_local = open(local_dir + filename)
f_remote = sftp.open(remot_dir + filename, "w")
tmp_buffer = f_local.read(100000)
while tmp_buffer:
f_remote.write(tmp_buffer)
tmp_buffer = f_local.read(100000)
f_remote.close()
f_local.close()