gpt4 book ai didi

python - 在 Windows 上打印到 NamedTemporaryFile

转载 作者:行者123 更新时间:2023-11-28 22:22:39 27 4
gpt4 key购买 nike

原始问题 - MCVE

以下脚本应该使用 chrome headless 打印成 pdf(我运行的是 windows 10 和 python 3.6):

import subprocess
from tempfile import NamedTemporaryFile

output = NamedTemporaryFile()
CHROME_PATH=r'"C:\Program Files (x86)\Google\Chrome\Application\chrome"'

chrome_args=[CHROME_PATH,
'--headless',
r'--print-to-pdf="{}"'.format(output.name),
'--disable-gpu',
'https://www.google.com/',]

subprocess.call(chrome_args,shell=True)

但是生成的文件只是空的。

尝试调试

为了弄清楚发生了什么,我将脚本修改为以下内容:

import subprocess
CHROME_PATH=r'"C:\Program Files (x86)\Google\Chrome\Application\chrome"'

chrome_args=[CHROME_PATH,
'--headless',
r'--print-to-pdf="c:\Users\timmc\Documents\output.pdf"',
'--disable-gpu',
'https://www.google.com/',]

print(r" ".join(chrome_args)) #For debuging

subprocess.call(chrome_args,shell=True)

在这种情况下,只是没有在预期位置生成文件。打印结果为:

"C:\Program Files (x86)\Google\Chrome\Application\chrome" --headless --print-to-pdf="c:\Users\timmc\Documents\output.pdf" --disable-gpu https://www.google.com/

如果我运行以下命令(创建原始字符串文字),一切都会按预期工作并生成文件。

subprocess.call(r'"C:\Program Files (x86)\Google\Chrome\Application\chrome" --headless --print-to-pdf="c:\Users\timmc\Documents\output.pdf" --disable-gpu https://www.google.com/', shell=True)

在 stack-overflow 上四处搜索并尝试了一些东西后,我仍然无法让原始脚本运行。有任何想法吗?

部分问题是我似乎无法从子进程调用中获得任何有意义的调试。对此的任何帮助也将不胜感激。

最佳答案

我会尝试回答而不是一次又一次地发表评论,但显然我无法对此进行测试。

问题主要是双引号 & shell=True 的强制。将引用留给 subprocess(也在 CHROME_PATH 中)并正确拆分参数通常有效。我在这里用这种技术解决了很多问题。

由于您的评论表明它没有,并且您找到了解决方法,所以让我建议改进此解决方法:在有效的命令行中注入(inject)输出文件名:

subprocess.call(r'"C:\Program Files (x86)\Google\Chrome\Application\chrome" --headless --print-to-pdf="{}" --disable-gpu https://www.google.com/'.format(output.name), shell=True)

我不满意,但它有很好的工作机会。

关于python - 在 Windows 上打印到 NamedTemporaryFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47575979/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com