gpt4 book ai didi

python - 当我从本地计算机更改为我的虚拟主机时,从 python 脚本调用 pdftotext 不起作用

转载 作者:太空狗 更新时间:2023-10-30 02:00:20 26 4
gpt4 key购买 nike

我写了一个小的 python 脚本来解析/提取 PDF 中的信息。我在我的本地机器上测试了它,我有 python 2.6.2 和 pdftotext 版本 0.12.4。

我正在尝试在我的虚拟主机服务器 (dreamhost) 上运行它。它有 python 版本 2.5.2 和 pdftotext 版本 3.02。

但是当我尝试运行脚本时,我在 pdftotext 行收到以下错误(我也使用简单的丢弃脚本对其进行了检查)“错误:无法打开文件 '-'”

def ConvertPDFToText(currentPDF):
pdfData = currentPDF.read()

tf = os.tmpfile()
tf.write(pdfData)
tf.seek(0)

if (len(pdfData) > 0) :
out, err = subprocess.Popen(["pdftotext", "-layout", "-", "-"], stdin = tf, stdout=subprocess.PIPE ).communicate()
return out
else :
return None

请注意,我向此函数传递了同一个 PDF 文件,它确实可以访问它。在另一个功能中,我可以通过在网络主机上运行的相同脚本将 PDF 文档通过电子邮件发送给自己。

我做错了什么?我的本地版本和 webhost 版本在 subprocess/python/pdftext 的使用上可能有什么不同?我猜我将不得不修改命令,因此我们将不胜感激任何帮助。

提前致谢。

最佳答案

答案的提示在 Noufal 的评论中,使用文件名。但是 os.tmpfile() 没有文件名。我不得不使用另一个模块。修改后的代码如下。

#import tempfile
def ConvertPDFToText(currentPDF):
pdfData = currentPDF.read()

tf = tempfile.NamedTemporaryFile()
tf.write(pdfData)
tf.seek(0)

outputTf = tempfile.NamedTemporaryFile()

if (len(pdfData) > 0) :
out, err = subprocess.Popen(["pdftotext", "-layout", tf.name, outputTf.name ]).communicate()
return outputTf.read()
else :
return None

不过,我不确定如何为 Noufal 的评论提供此答案的要点。也许他可以剪切并粘贴这个答案?

关于python - 当我从本地计算机更改为我的虚拟主机时,从 python 脚本调用 pdftotext 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4837114/

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