2017-03-26 63 views
1

我想创建一个python脚本,使我能够通过sftp上传特定文件夹中的文件。目录总是一样的。 这是我想出了:使用python上传sftp文件 - 避免文件重命名

import pysftp 
import os 
import shutil 

cnopts = pysftp.CnOpts(knownhosts='~/.ssh/authorized_keys') 
cnopts.hostkeys = None 


host = "xxx" 
password = "xxx" 
username = "xxx" 

srv = pysftp.Connection(host, username=username, password=password, cnopts=cnopts) 

# src_files = os.listdir("C:/Users/uploads") 
remotepath = "/home/work" 
localpath = "C:/Users/uploads" 
# with srv.cd('/home/work'): # chdir to work 
with srv.cd(): 
    srv.chdir('schedule') 
    srv.put_d(localpath, remotepath) 

print('Upload done') 
srv.close() 

请告诉我发生的事情是,所有的文件被转移到该文件夹​​/家庭/工作/计划但它们被命名为这样。“工作\文件名”。但我想要的文件名是相同的。我试图排除用''替换它的remotepath,但仍然将文件重命名为'\。\文件名' 这里有什么问题?

正如你所看到的,我试图与os和shutil一起工作,但那并不适合我。所以它仍然在代码中,但没有必要。

谢谢您的输入

回答

0

有尝试:

with srv.cd(remotepath): 
    srv.put_d(localpath, 'schedule') 
+0

感谢您的快速反应。我尝试过这个。结果是我的文件被放在服务器上的“work”文件夹中,文件名为“schedule \。\ test.txt”,所以文件仍然被重命名。 – Burray