从STDIN读取二进制数据并保存到fi的bash或python脚本

2024-04-18 05:30:49 发布

您现在位置:Python中文网/ 问答频道 /正文

在别人告诉我之前,我完全意识到我所做的是荒谬的,但我有我的理由。在

我有一个可以编写脚本的服务器(bash或python)。脚本需要接受来自STDIN的二进制数据并将其保存到文件中。准确地说,二进制数据是一个WAV文件。在

我正在做的是使用一个名为工作流的iOS应用程序。这个应用程序将允许我录制一个音频文件,然后将其作为STDIN输入发送到一个脚本中,该脚本将通过SSH运行。所以我的脚本需要将STDIN输入保存到一个文件中。在

有什么想法吗?我完全不知道从哪里开始。在


Tags: 文件数据服务器脚本bash应用程序stdin二进制
2条回答

要从python中的stdin读取:

import sys
input = sys.stdin.read()

要将二进制文件写入文件:

^{pr2}$

其中'wb'以二进制模式发送进行写入。在

要将stdin保存到POSIXy系统上的文件:

  1. 确保stdin以二进制模式打开
  2. 检查fadvise是否提高了您案例中的时间性能,例如,请参见^{} in contrib
  3. 从stdin读取块并将其写入文件

一般来说,您也可以try ^{} if stdin might be redirected from a file (mmap-able file descriptor)(它不适用于您的情况)。在

#!/usr/bin/env python
import os
import shutil
import sys

with os.fdopen(sys.stdin.fileno(), 'rb') as input_file,\
     open(sys.argv[1], 'wb') as output_file:
    shutil.copyfileobj(input_file, output_file)

示例:

^{pr2}$

这应该相当于:

$ cat >| output_file

相关问题 更多 >