gpt4 book ai didi

linux - 如何管道虚拟文件?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:11:00 25 4
gpt4 key购买 nike

我正在使用这些命令在 inkscape 中转换一些文件:

python dxf_input.py sample.dxf > output_ink.svg
python scour.inkscape.py output_ink.svg > output.svg

这个方法效果很好。但是,我不想创建文件“output_ink.svg”。相反,我想将该文件通过管道传递给第二个命令。

我已经尝试了很多东西。

使用 xargs:

python dxf_input.py sample.dxf | xargs python scour.inkscape.py > output.svg

scour.inkscape.py: error: no such option: -3

python dxf_input.py sample.dxf | xargs -I{} python scour.inkscape.py {} > output.svg

xargs: argument line too long

使用 FIFO:

python scour.inkscape.py <(>(python dxf_input.py sample.dxf))

xml.parsers.expat.ExpatError: no element found: line 1, column 0

使用普通管道:

python dxf_input.py sample.dxf | python scour.inkscape.py > output.svg

IOError: [Errno 32] Broken pipe

到目前为止没有任何效果。

最佳答案

并非所有程序都可以接受来自任何类型的 FIFO 的输入——无论是常规管道、命名管道还是/dev/fd/NN。描述符(由 <() 在允许的平台上创建)等——因为 FIFO 本质上是不可搜索的:您不能像使用常规文件那样返回到开头并重新读取先前的内容;您不能直接跳到文件的不同部分,稍后再回来;等

因此,在需要“管道”的限制下,不存在适用于所有可能程序的解决方案。


首先,如果什么会起作用 scour.inkscape.py可以从 FIFO 中读取:

python scour.inkscape.py <(python dxf_input.py sample.dxf)

如果它不能从 FIFO 中读取,而是需要一个常规文件,bash 没有相关的原语,但 zsh 有:

# This needs zsh, not bash
python scour.inkscape.py =(python dxf_input.py sample.dxf)

关于linux - 如何管道虚拟文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36948085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com