<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. 如何将字符串写入远程计算机上的文件?

      时间:2024-04-20

      <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>
                

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

                上一篇:这个月的第几周? 下一篇:根据查询参数进行筛选

                相关文章

              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'>

              2. <tfoot id='9kVKj'></tfoot>

                  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>