在有人告诉我之前,我完全意识到我想做的事情是荒谬的,但我有自己的理由。
我有一个服务器,我可以在其上编写脚本(bash或python)。脚本需要接受来自STDIN的二进制数据并将其保存到文件中。确切地说,二进制数据是WAV文件。
我正在做的是使用名为Workflow的iOS应用程序。该应用程序将让我录制一个音频文件,然后将其作为STDIN输入发送到它将通过SSH运行的脚本。所以我的脚本需要获取STDIN输入并将其保存到文件中。
任何想法/想法?我完全迷失在哪里开始。
答案 0 :(得分:4)
将stdin保存到POSIXy系统上的文件:
copyfileobj()
in contrib 一般情况下,您也可以try os.sendfile()
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)
示例:
$ python -msave_stdin output_file
应该相当于:
$ cat >| output_file
答案 1 :(得分:3)
从python中的stdin读取:
import sys
input = sys.stdin.read()
将二进制文件写入文件:
with open('name_of_file_here','wb') as output:
output.write(input)
'wb'以二进制模式发送写入的地方。