使用paramiko和sftp创建新的结果/日志文件
我正在使用Python和Paramiko通过SFTP读取一些文件。获取文件的操作很顺利。当我处理完文件后,我想上传一个总结结果的文件。我希望不必先把文件保存在本地,然后再上传;我已经有一个结果的字典,只想在SFTP服务器上创建一个文件,把这些结果放进去。下面是我的代码,我希望里面包含了所有相关的部分,去掉了不相关的内容,以便更易读。
需要注意的是,我成功地读取了文件并处理它,创建了结果的字典,而且在运行csv_import时可以在终端打印出来。但是,当我尝试添加最后一步,把结果字典放到同一个SFTP服务器上的文件时,它就一直卡在那里,没反应。任何帮助都非常感谢。
def csv_import():
we_are_live = True
host = "111.111.111.111"
port = 22
password = "cleverpwd"
username = "cleverun"
t = paramiko.Transport((host,port))
t.connect(username=username, password=password)
if we_are_live and t.is_authenticated():
sftp = paramiko.SFTPClient.from_transport(t)
sftp.chdir('.'+settings.REMOTE_SFTP_DIRECTORY)
files_to_pick_from = sftp.listdir()
…file processing code happens here, get back a dictionary of the results...
results_file_name = 'results'+client_file_name
results_file = paramiko.SFTPClient.from_transport(t)
results_file.file(results_file_name,mode='w',bufsize=-1)
results_file.write(str(sftp_results_of_import))
results_file.close()
t.close()
1 个回答
1
我之前做过类似的事情,不过我用的是磁盘文件,也许你会找到一些有用的东西:
http://code.activestate.com/recipes/576810-copy-files-over-ssh-using-paramiko/
如果你只需要在内存中创建文件,可以试试 StringIO: http://docs.python.org/library/stringio.html