Comment diff de fichiers et les flux de sortie “à la volée”?
J'ai besoin de créer un fichier diff en utilisant le standard UNIX diff de commande avec python sous-processus module. Le problème est que je doit comparer les fichiers et les flux sans créer de tempopary fichier. J'ai pensé à utiliser des canaux nommés via os.mkfifo méthode, mais n'a pas atteint aucun bon résultat. S'il vous plaît, pouvez-vous écrire un exemple simple sur la façon de résoudre ce genre de choses? J'ai essayé comme ceci:
fifo = 'pipe'
os.mkfifo(fifo)
op = popen('cat ', fifo)
print >> open(fifo, 'w'), output
os.unlink(fifo)
proc = Popen(['diff', '-u', dumpfile], stdin=op, stdout=PIPE)
mais il semble comme diff
ne voit pas le deuxième argument.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le bouton "-" comme un argument de
diff
à direstdin
.stdin=PIPE
à laPopen
appel, puisproc.stdin.write(data)
.Vous pourriez peut-être envisager d'utiliser la difflib module python (je suis lié à un exemple ici) et de créer quelque chose qui génère et imprime les diff directement plutôt que de compter sur
diff
. Les différentes fonction des méthodes à l'intérieur de difflib peut recevoir de caractère tampons qui peuvent être traitées dans des comparaisons de différents types.Alternativement, vous pouvez construire un oléoduc de shell et de l'utilisation de processus de substitution comme
Pour plus de détails, consultez http://tldp.org/LDP/abs/html/process-sub.html