我试图使用pyPdf和我的代码重命名一些PDF文件,它似乎工作正常,直到它到达重命名句子。而/如果 代码块查找页面编号,其中字符串"此字符串"位于,当发现停止。页码为"新名称" 已创建。
我的问题是,即使有阻止它自动关闭文件,当它到达重命名句子时,我得到了 错误
Traceback (most recent call last):
File "<stdin>", line 14, in <module>
WindowsError: [Error 32] The process cannot access the file because it is being used by another process
我在重命名文件之前并不知道如何关闭文件,因为如果我使用&#34; file.close()&#34;我收到此错误
Traceback (most recent call last):
File "<stdin>", line 14, in <module>
AttributeError: 'str' object has no attribute 'close'
我目前的代码如下,感谢您提供任何帮助。
import os
import glob
import sys
from os.path import basename
import pyPdf
path = "C:\\My\\Path\\"
os.chdir(path)
for file in glob.glob("*.pdf"):
print file
i = 0
with open(file, "rb") as f:
pdf = pyPdf.PdfFileReader(f)
while True:
txt = pdf.pages[i].extractText()
if "This string" in txt:
new_name = basename(file) + "_Page_" + str(i)
break
i = i + 1
print new_name
#file.close()
os.rename(file, new_name) # The error occurs here.
*更新*
没有With block我得到同样的错误
for file in glob.glob("*pdf"):
print file
i = 0
f = open(file, "rb")
pdf = pyPdf.PdfFileReader(f)
while True:
txt = pdf.pages[i].extractText()
if "This string" in txt:
new_name = basename(file) + "_Page_" + str(i)
break
i = i + 1
f.close()
os.rename(file, new_name)
答案 0 :(得分:0)
感谢您的建议。但是,我删除了程序中的变量,并取得了成功。 :) 在我看来,该文件肯定在我的程序中打开,但我不知道如何丢失它,所以我清理所有。 :(