使用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()

之前做过类似的事情,但我使用磁盘文件,也许你会发现一些有用的东西:

http://code.activestate.com/recipes/576810-copy-files-over-ssh-using-paramiko/

如果你只需要在内存中创建文件,你可以试试StringIO:http://docs.python.org/library/stringio.html

最新更新