Windows错误:尝试在python中重命名文件时为32

时间:2015-12-24 17:46:11

标签: python rename pypdf

我试图使用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)

1 个答案:

答案 0 :(得分:0)

感谢您的建议。但是,我删除了程序中的变量,并取得了成功。 :) 在我看来,该文件肯定在我的程序中打开,但我不知道如何丢失它,所以我清理所有。 :(