You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何跨计算机将管道流式数据直接导入Python脚本(无需存文件)

直接通过SSH管道将远程数据流导入Python脚本

完全可以跳过中间的destfile,让远程机器生成的数据直接通过SSH管道传输到本地Python脚本实时处理,既省磁盘空间又能做到数据的即时处理,完美解决文件过大的问题。

核心实现思路

让远程机器上生成/输出数据的进程,直接把标准输出通过SSH传递到本地,本地Python脚本直接读取这个管道流即可,全程不需要落地文件。

具体命令示例

场景1:远程直接生成数据流(不落地文件)

如果远程有一个持续输出数据的程序(比如data_generator.sh或者自定义的服务),直接在本地执行这条命令,就能把远程的实时数据流导入你的Python脚本:

ssh second_com@IP_address 'path/to/your_data_generator' | python your_processing_script.py

场景2:远程已有进程往文件写数据(兼容现有场景)

如果目前远程还是有进程持续往destfile写数据,不想改动这个进程的话,可以用tail -f实时读取文件的新增内容,再通过管道传输:

ssh second_com@IP_address 'tail -f destfile' | python your_processing_script.py

这个命令只会传输destfile中新写入的内容,不会把已经积累的大文件全部传过来。

Python脚本读取数据流的示例

你的Python脚本只需要从标准输入(sys.stdin)读取数据就行,比如按行处理的示例:

import sys

def process_data(line):
    # 这里替换成你的实际数据处理逻辑
    cleaned_line = line.strip()
    print(f"处理完成:{cleaned_line}")

# 实时读取每一行输入
for line in sys.stdin:
    process_data(line)

如果你的数据不是按行分隔的,也可以用分块读取的方式:

import sys

chunk_size = 1024  # 按1KB块读取
while True:
    chunk = sys.stdin.read(chunk_size)
    if not chunk:
        break
    # 处理块数据
    print(f"读取到{len(chunk)}字节数据")

额外优化小技巧

  • 如果担心SSH连接不稳定,可以用autossh替代ssh,它会自动重连断开的会话,保证数据流不中断。
  • 如果远程数据量极大,可以先在远程做初步过滤(比如用grep、awk筛选需要的内容),减少传输的数据量,提升处理效率。

内容的提问来源于stack exchange,提问作者Steve

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:21:19