<legend id='SDiTM'><style id='SDiTM'><dir id='SDiTM'><q id='SDiTM'></q></dir></style></legend>

    <small id='SDiTM'></small><noframes id='SDiTM'>

    <tfoot id='SDiTM'></tfoot>
    <i id='SDiTM'><tr id='SDiTM'><dt id='SDiTM'><q id='SDiTM'><span id='SDiTM'><b id='SDiTM'><form id='SDiTM'><ins id='SDiTM'></ins><ul id='SDiTM'></ul><sub id='SDiTM'></sub></form><legend id='SDiTM'></legend><bdo id='SDiTM'><pre id='SDiTM'><center id='SDiTM'></center></pre></bdo></b><th id='SDiTM'></th></span></q></dt></tr></i><div id='SDiTM'><tfoot id='SDiTM'></tfoot><dl id='SDiTM'><fieldset id='SDiTM'></fieldset></dl></div>
      <bdo id='SDiTM'></bdo><ul id='SDiTM'></ul>

    1. 如何将字符串写入远程计算机上的文件?

      How to write a string to a file on a remote machine?(如何将字符串写入远程计算机上的文件?)

      <small id='QdHRh'></small><noframes id='QdHRh'>

          <tbody id='QdHRh'></tbody>
        • <bdo id='QdHRh'></bdo><ul id='QdHRh'></ul>

            1. <legend id='QdHRh'><style id='QdHRh'><dir id='QdHRh'><q id='QdHRh'></q></dir></style></legend>

              <i id='QdHRh'><tr id='QdHRh'><dt id='QdHRh'><q id='QdHRh'><span id='QdHRh'><b id='QdHRh'><form id='QdHRh'><ins id='QdHRh'></ins><ul id='QdHRh'></ul><sub id='QdHRh'></sub></form><legend id='QdHRh'></legend><bdo id='QdHRh'><pre id='QdHRh'><center id='QdHRh'></center></pre></bdo></b><th id='QdHRh'></th></span></q></dt></tr></i><div id='QdHRh'><tfoot id='QdHRh'></tfoot><dl id='QdHRh'><fieldset id='QdHRh'></fieldset></dl></div>

                <tfoot id='QdHRh'></tfoot>
                本文介绍了如何将字符串写入远程计算机上的文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                问题描述

                在Machine1上,我有一个Python2.7脚本,该脚本在RAM中计算一个很大(最大10MB)的二进制字符串,我希望将该字符串写入到Machine2上的磁盘文件中,Machine2是一台远程计算机。执行此操作的最佳方式是什么?

                约束:

                • 这两台机器都是Ubuntu13.04。它们之间的连接速度很快--它们位于同一网络上。

                • 目标目录可能在Machine2上尚不存在,因此可能需要创建它。

                • 如果很容易,我希望避免将字符串从RAM写入Machine1上的临时磁盘文件。这是否消除了可能使用系统调用进行rsync的解决方案?

                • 因为字符串是二进制的,所以它可能包含可以解释为换行符的字节。这似乎排除了可能对Machine2上的echo命令使用系统调用的解决方案。

                • 我希望它在Machine2上尽可能轻量级。因此,我希望避免在Machine2上运行ftp之类的服务或在那里进行其他配置活动。另外,我不太了解安全,因此除非确实有必要,否则希望避免打开额外的端口。

                • 我在Machine1和Machine2上设置了ssh密钥,并且要使用它们进行身份验证。

                • 编辑:Machine1正在运行多个线程,因此可能会有多个线程尝试在重叠时间写入Machine2上的同一文件。我并不介意在这种情况下将文件写入两次(或更多次)会导致效率低下,但是在Machine2上产生的数据文件不应该因同时写入而损坏。是否需要计算机2上的操作系统锁?

                我支持rsync解决方案,因为它是一个我非常了解的独立实体,不需要在Machine2上进行配置。

                SSH

                您使用subprocess.Popen向Machine2打开一个新的推荐答案进程,然后将数据写入其STDIN。

                import subprocess
                
                cmd = ['ssh', 'user@machine2',
                       'mkdir -p output/dir; cat - > output/dir/file.dat']
                
                p = subprocess.Popen(cmd, stdin=subprocess.PIPE)
                
                your_inmem_data = 'foobarbaz' * 1024 * 1024
                
                for chunk_ix in range(0, len(your_inmem_data), 1024):
                    chunk = your_inmem_data[chunk_ix:chunk_ix + 1024]
                    p.stdin.write(chunk)
                

                我刚刚验证它是否如播发的那样工作,并复制所有的10485760个虚拟字节。

                P.S.一个可能更干净/更优雅的解决方案是让Python程序将其输出写入sys.stdout,然后将管道传输到ssh外部:

                $ python process.py | ssh <the same ssh command>
                

                这篇关于如何将字符串写入远程计算机上的文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                相关文档推荐

                Split a Pandas column of lists into multiple columns(将 Pandas 的列表列拆分为多列)
                How does the @property decorator work in Python?(@property 装饰器在 Python 中是如何工作的?)
                What is the difference between old style and new style classes in Python?(Python中的旧样式类和新样式类有什么区别?)
                How to break out of multiple loops?(如何打破多个循环?)
                How to put the legend out of the plot(如何将传说从情节中剔除)
                Why is the output of my function printing out quot;Nonequot;?(为什么我的函数输出打印出“无?)

              1. <i id='9kVKj'><tr id='9kVKj'><dt id='9kVKj'><q id='9kVKj'><span id='9kVKj'><b id='9kVKj'><form id='9kVKj'><ins id='9kVKj'></ins><ul id='9kVKj'></ul><sub id='9kVKj'></sub></form><legend id='9kVKj'></legend><bdo id='9kVKj'><pre id='9kVKj'><center id='9kVKj'></center></pre></bdo></b><th id='9kVKj'></th></span></q></dt></tr></i><div id='9kVKj'><tfoot id='9kVKj'></tfoot><dl id='9kVKj'><fieldset id='9kVKj'></fieldset></dl></div>

                <small id='9kVKj'></small><noframes id='9kVKj'>

                • <tfoot id='9kVKj'></tfoot>
                    <tbody id='9kVKj'></tbody>

                    1. <legend id='9kVKj'><style id='9kVKj'><dir id='9kVKj'><q id='9kVKj'></q></dir></style></legend>
                      • <bdo id='9kVKj'></bdo><ul id='9kVKj'></ul>