2010-10-18 77 views
0

我想使用命令pdftotext将所有的.pdf文件从特定的目录转换为.txt格式...但我想用python脚本来做这个... my脚本包含:无法使用python脚本将pdf转换为文本

import glob 
import os 

fullPath = os.path.abspath("/home/eth1/Downloads") 

for fileName in glob.glob(os.path.join(fullPath,'*.pdf')): 
    fullFileName = os.path.join(fullPath, fileName) 
    os.popen('pdftotext fullFileName') 

,但我收到以下错误:

Error: Couldn't open file 'fullFileName': No such file or directory. 
+0

'fullFileName = os.path.join(fullPath,fileName)'是多余的 – SilentGhost 2010-10-18 10:05:44

回答

3

你从字面上传递fullFileNameos.popen。你应该做这样的事情,而不是(假设fullFileName没有进行转义):

os.popen('pdftotext %s' % fullFileName) 

还要注意的是os.popen不推荐使用,最好使用subprocess模块来代替:

import subprocess 
retcode = subprocess.call(["/usr/bin/pdftotext", fullFileName]) 

它也更安全,因为它正确处理fullFileName中的空格和特殊字符。

+0

嘿伙计thanx的更正.. – user868769 2010-10-18 10:09:03

+0

但一个捕获...它只转换第一个PDF ...而我想转换全部来自那个目录 – user868769 2010-10-18 10:10:19

+0

那么,当然把整个东西放在你最初有'os.popen'调用的'for'循环中。 – 2010-10-18 11:33:39

1

最后一行更改为

os.open('pdftotext {0}'.format(fullFileName)) 

这样的fullFileName值将被传递,而不是名称。

+0

嘿伙计thanx的更正.. – user868769 2010-10-18 10:10:50

+0

但一个捕获...它只转换第一个pdf ...而我想转换所有目录 – user868769 2010-10-18 10:11:16