Je voudrais reproduire ce en python:Rediriger commande à l'entrée d'un autre en Python
gvimdiff <(hg cat file.txt) file.txt
(cat hg file.txt sort la version la plus récente de commis file.txt)
Je sais comment le fichier tuyau à gvimdiff, mais il n'acceptera un autre fichier:
$ hg cat file.txt | gvimdiff file.txt -
Too many edit arguments: "-"
se rendre à la partie python ...
# hgdiff.py
import subprocess
import sys
file = sys.argv[1]
subprocess.call(["gvimdiff", "<(hg cat %s)" % file, file])
Lorsque le sous-processus est appelé, il passe simplement <(hg cat file)
sur gvimdiff
comme nom de fichier.
Alors, est-il possible de rediriger une commande comme le fait bash? Par souci de simplicité tout chat un fichier et le rediriger vers diff:
diff <(cat file.txt) file.txt
Belle solution. A quoi sert bash: > python -c "import sys; print (sys.argv)" <(echo bonjour) function_proj.cc ['-c', '/ dev/fd/63', ' function_proj.cc '] – gatoatigrado
@gatoatigrado - au moins sur mes systèmes, '/ dev/fd' est un lien symbolique vers'/proc/self/fd' –