我正在尝试使用 python 和 pandoc 将几段 html 转换为乳胶,但我遇到了几个问题。
为了将我的 python 脚本与我使用的 pandoc 通信subprocess.Popen
,重定向stdout
到我保存的文件,以便将其包含在乳胶模板中。
如果我使用经典的实现方式Popen
from subprocess import Popen, PIPE, STDOUT
filedesc = open('myfile.tex','w')
args = ['pandoc', '-f', 'html', '-t', 'latex']
p = Popen(args, stdout=PIPE, stdin=PIPE, stderr=STDOUT)
outp, err = p.communicate(input=html)
filedesc.write(outp)
我得到了一个额外的新行,其中不应该有:
> \textbf{M. John Harrison}(橄榄球,沃克威克郡,1945 年)是当代的
>
> 英文作家。
这(神秘?)很容易通过更改stdout=PIPE
文件描述符来解决:
from subprocess import Popen, PIPE, STDOUT
filedesc = open('myfile.tex','w')
args = ['pandoc', '-f', 'html', '-t', 'latex']
p = Popen(args, stdout=filedesc, stdin=PIPE, stderr=STDOUT)
outp, err = p.communicate(input=html)
# not needed
# filedesc.write(outp)
但是如果我想使用字符串缓冲区,就会出现同样的问题,因为我不能将它用作 stdout 参数。
关于如何阻止 Popen/pandoc 这样做的任何想法?
谢谢!