Python 动态创建文件并转换为pdf

Python 动态创建文件并转换为pdf,python,file-io,wkhtmltopdf,Python,File Io,Wkhtmltopdf,我正在尝试创建一个html文件,然后使用wkhtmltopdf 在convert2pdf中,我正在做: def convert2pdf(htmlfilename,outputpdf): 导入子流程 命令\u to \u run=['/wkhtmltopdf-amd64','htmlfilename','outputpdf'] 子流程调用(命令到运行) 两个输入/输出文件都是动态创建的。输入文件是完美的,但使用wkhtmltopdf创建的输出pdf为空。你能告诉我我做错了什么吗。我想你必须改变一下

我正在尝试创建一个html文件,然后使用
wkhtmltopdf

在convert2pdf中,我正在做:

def convert2pdf(htmlfilename,outputpdf): 导入子流程 命令\u to \u run=['/wkhtmltopdf-amd64','htmlfilename','outputpdf'] 子流程调用(命令到运行)


两个输入/输出文件都是动态创建的。输入文件是完美的,但使用
wkhtmltopdf
创建的输出pdf为空。你能告诉我我做错了什么吗。

我想你必须改变一下

commands_to_run = ['/wkhtmltopdf-amd64','htmlfilename', 'outputpdf']

而不是

ret = convert2pdf(f,outputfilename) 


只是好奇,为什么你要先打开f1然后再关闭它?当您尝试使用外部进程写入同一文件时,Python程序似乎有一个打开的输出文件供写入。如果我不打开并关闭它,则不会生成pdf。理想情况下,如果您给它一个html文件,wkhtmltopdf会创建一个新的pdf,但在本例中不是。使用wkhtmltopdf生成pdf的示例命令:
wkhtmltopdf my.html my.pdf
在python代码中根本不需要(有些人会认为不应该)打开f1。是的@doogabides。问题出在别的地方。我移除了f1。打开和关闭它仍然可以正常工作。哦,天哪……这很有效。谢谢。我被困在这上面两个小时了。但是在
命令中告诉我为什么我们没有引用。假设我们要运行命令
ls
我们要执行
子流程调用(['ls'])
ls
中使用引号。为什么不在这里?只是因为你问了-htmlfilename和outputpdf不需要引号,因为它们不是实际的文件名-它们是包含真实文件名的变量(对象名)。所以他们不会得到引号,因为你在做变量替换。
commands_to_run = ['/wkhtmltopdf-amd64', htmlfilename, outputpdf]
ret = convert2pdf(f,outputfilename) 
ret = convert2pdf(inputfilename, outputfilename)