【问题标题】:writing data into fifo file in python在python中将数据写入fifo文件
【发布时间】:2020-01-13 05:17:48
【问题描述】:

我已经录制了一个音频文件,我正在将该文件转换为 base64 格式。现在我想将此音频文件写入 fifo 文件。 代码如下:

import os 
import base64
import select
os.system("mkfifo audio1.fifo")
with open("audio1.fifo") as fifo:
     select.select([fifo],[],[fifo])
     with open("out1.wav","rb") as audioFile:
         str = base64.b64encode(audioFile.read())
         fifo.write(str)

但是上面的代码只创建了fifo文件,没有在里面写任何东西。请给点建议。

【问题讨论】:

  • 你打开对面阅读了吗?
  • 您使用什么作为阅读器?请问如何启动/运行它?
  • @MisterMiyagi 我打开了需要写入数据的fifo文件。你说的另一面先生是什么意思??
  • FIFO 用于交换数据,而不是存储数据。如果另一端没有任何东西可以接收数据,通常无法写入。引用the linux man page:“FIFO 必须在两端(读取和写入)都打开,然后才能传递数据。”
  • @MisterMiyagi 你能告诉我是否想从树莓派 3b 的 uart 读取音频数据并在 3.5mm 音频插孔同时播放相同的数据(考虑到我正在传输来自发射器端Raspberry pi的一些音频数据)。怎么做??

标签: python raspberry-pi raspbian gpio


【解决方案1】:

使用+模型可以同时支持读写

import base64
import select
os.system("mkfifo audio1.fifo")
with open("audio1.fifo", "wb") as fifo:
     select.select([fifo],[],[fifo])
     with open("out1.wav","rb") as audioFile:
         str = base64.b64encode(audioFile.read())
         fifo.write(str)

同时读写两个不同的文件:

# maker sure the be read file's has some data.
with open("a.file", "w") as fp:
    fp.write("some data")

# now a.file has some data, we create a b.file for write the a.file's data.
with open("b.file", "w") as write_fp, open("a.file", "r") as read_fp:
    write_fp.write(read_fp.read())

# for bytes data
with open("b.file", "wb") as write_fp, open("a.file", "rb") as read_fp:
    write_fp.write(read_fp.read())

【讨论】:

  • 仍然没有写入fifo文件
  • @kunal 如果你的错误信息是TypeError: a bytes-like object is required, not 'str',你需要把你的数据变成字节数据或者使用r+模型。
  • 先生,它没有显示任何错误。程序正在连续运行但没有将任何内容写入fifio文件
  • var str 有数据吗?
  • 是的,先生,它必须有数据,因为我尝试了一个程序,在该程序中我录制的音频文件将其转换为 base64 格式,然后使用 ser.write(str) 函数传输它。这工作得非常好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-27
  • 1970-01-01
  • 1970-01-01
  • 2015-01-21
  • 1970-01-01
  • 1970-01-01
  • 2011-10-26
相关资源
最近更新 更多