Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to diff file and output stream "on-the-fly"?

I need to create a diff file using standard UNIX diff command with python subprocess module. The problem is that I must compare file and stream without creating tempopary file. I thought about using named pipes via os.mkfifo method, but didn't reach any good result. Please, can you write a simple example on how to solve this stuff? I tried like so:

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) 

but it seems like diff doesn't see the second argument.

like image 629
Enchantner Avatar asked Jan 07 '10 18:01

Enchantner


1 Answers

You can use "-" as an argument to diff to mean stdin.

like image 113
Fred Larson Avatar answered Sep 19 '22 12:09

Fred Larson