I would like to replicate this in python:
gvimdiff <(hg cat file.txt) file.txt
(hg cat file.txt outputs the most recently committed version of file.txt)
I know how to pipe the file to gvimdiff, but it won’t accept another file:
$ hg cat file.txt | gvimdiff file.txt - Too many edit arguments: '-'
Getting to the python part…
# hgdiff.py import subprocess import sys file = sys.argv[1] subprocess.call(['gvimdiff', '<(hg cat %s)' % file, file])
When subprocess is called it merely passes <(hg cat file) onto gvimdiff as a filename.
So, is there any way to redirect a command as bash does? For simplicity’s sake just cat a file and redirect it to diff:
diff <(cat file.txt) file.txt
It can be done. As of Python 2.5, however, this mechanism is Linux-specific and not portable:
That said, in the specific case of diff, you can simply take one of the files from stdin, and remove the need to use the bash-alike functionality in question: