无法使用python脚本将pdf转换为文本

无法使用python脚本将pdf转换为文本,python,glob,Python,Glob,我想使用命令pdftotext将所有.pdf文件从特定目录转换为.txt格式。。。但是我想用一个python脚本来做这个。。。 我的脚本包含: 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, fi

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

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.

您正在将
fullFileName
逐字传递到
os.popen
。您应该这样做(假设不必转义
fullFileName
):

还要注意的是,
os.popen
被认为是不推荐使用的,最好使用
子流程
模块:

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

它还可以更安全地处理
fullFileName
中的空格和特殊字符。

您正在将
fullFileName
逐字传递到
os.popen
。您应该这样做(假设不必转义
fullFileName
):

还要注意的是,
os.popen
被认为是不推荐使用的,最好使用
子流程
模块:

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

它还可以更安全地处理
fullFileName
中的空格和特殊字符。

将最后一行更改为

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

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

将最后一行更改为

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

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

fullFileName=os.path.join(fullPath,fileName)
是冗余的
fullFileName=os.path.join(fullPath,fileName)
是冗余的,但有一个捕获。。。它仅转换第一个pdf。。。虽然我想转换来自dirWell的所有内容,但我当然会将所有内容放在您最初调用
os.popen
for
循环中。我也尝试了该代码。。。但它仍然只能转换列表中的第一个文件……它是否在每个
pdf
文件上运行
pdftotext
?您可以通过将
print
语句(或调用
print()
函数)放入循环中,或通过添加计数器并在末尾打印其值来判断。它调用的是所有文件,但只有一个catch。。。它仅转换第一个pdf。。。虽然我想转换来自dirWell的所有内容,但我当然会将所有内容放在您最初调用
os.popen
for
循环中。我也尝试了该代码。。。但它仍然只能转换列表中的第一个文件……它是否在每个
pdf
文件上运行
pdftotext
?您可以通过将
print
语句(或调用
print()
函数)放入循环中,或通过添加计数器并在末尾打印其值来判断。它调用的是所有文件,但只有一个catch。。。它仅转换第一个pdf。。。虽然我想从目录中转换所有内容,但有一个问题。。。它仅转换第一个pdf。。。然而,我想转换该目录中的所有内容