我想在我通过lessc读取/处理的一些东西上运行lessc,并且不想乱用文件.subprocess.check_output和Popen.communicate都被证明是一个非常麻烦的事情本来是一个快速的调整.它们都没有输出任何东西/永远等待.是否有某种无障碍的便利功能来管理缓冲区等等?
示例来源:
from subprocess import Popen
from sys import stderr
s = """
@a: 10px
foo {
width: @a;
}
"""
print("making")
p = Popen("lessc -", shell=True, stdout=-1, stdin=-1, stderr=stderr)
print("writing")
p.stdin.write(bytes(s, "utf-8"))
print("Waiting")
p.wait()
print("readng")
out = p.stdout.read()
print(out)
Run Code Online (Sandbox Code Playgroud)
输出:
making
writing
Waiting
Run Code Online (Sandbox Code Playgroud)
(注释掉等待部分只是让它在阅读时阻止)
我猜这个问题只是你的lessc并不是短暂的.它是从它的stdin读取的,你永远不会关闭它.
如果你从stdin读取,在它上面输入一些输入,然后简单地等待(从不发出输入结束信号),lessc如何在终端中表现?这就是你的计划正在做的事情.