Rick Dooling wrote:
I spent half a day trying to convert this bash script (on Mac)
textutil -convert html $1 -stdout | pandoc -f html -t markdown -o $2
into Python using subprocess pipes.
It works if I save the above into a shell script called convert.sh and
then do
subprocess.check_call(["convert.sh", file, markdown_file])
where file and markdown_file are variables.
But otherwise my piping attempts fail.
It is always a good idea to post your "best effort" failed attempt, if only
to give us an idea of your level of expertise.
Could someone show me how to pipe in subprocess. Yes, I've read the doc,
especially
http://docs.python.org/2/library/subprocess.html#replacing-shell-pipeline
But I'm a feeble hobbyist, not a computer scientist.
Try to convert the example from the above page
"""
output=`dmesg | grep hda`
# becomes
p1 = Popen(["dmesg"], stdout=PIPE)
p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE)
p1.stdout.close() # Allow p1 to receive a SIGPIPE if p2 exits.
output = p2.communicate()[0]
"""
to your usecase. Namely, replace
["dmesg"] --> ["textutil", "-convert", "html", infile, "-stdout"]
["grep", "hda"] --> ["pandoc", "-f", "html", "-t", "marktown", "-o",
outfile]
Don't forget to set
infile = ...
outfile = ...
to filenames (with absolute paths, to avoid one source of error).
If that doesn't work post the code you wrote along with the error messages.