在Machine1上,我有一个Python2.7脚本,该脚本在RAM中计算一个很大的字符串(最大10MB),我想将其写入到远程机器Machine2上的磁盘文件中。做这个的最好方式是什么?
限制条件:
我支持rsync解决方案,因为它是一个独立的实体,我相当了解,并且不需要在Machine2上进行任何配置。
最佳答案
您使用subprocess.Popen
打开Machine2的新SSH进程,然后将数据写入其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\0' * 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>
关于python - 在Python中,如何将字符串写入远程计算机上的文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19202314/