Je veux lancer lessc sur certaines choses que j'ai lues/traitées via lessc, et que je ne veux pas déranger avec des fichiers. subprocess.check_output et Popen.communicate se sont révélés être une grande partie de tracas pour quelque chose qui devait être un tweak rapide. Aucun d'entre eux ne sort rien/attend toujours. Y at-il une sorte de fonction de commodité sans tracas qui gère les tampons et autres joyeusetés?Quel est le moyen le plus simple de canaliser les choses à travers un processus de courte durée et obtenir des résultats?
source Exemple:
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)
Sortie:
making
writing
Waiting
(Commentant la partie d'attente la fait juste bloquer la lecture)
Comment le fermez-vous? – Glycan
p.stdin.close()? – emil