Cha*_*nya 4 python scripting subprocess dreamhost pdftotext
我写了一个小的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
Run Code Online (Sandbox Code Playgroud)
请注意,我将此函数传递给相同的PDF文件,并且它可以访问它.在另一个函数中,我可以通过webhost上运行的相同脚本向自己发送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
Run Code Online (Sandbox Code Playgroud)
我不确定如何给Noufal的评论提供这个答案的要点.也许他可以剪切并粘贴这个答案?