今天进行pdf文件合并的时候发现一个问题,在我将pdf文件合并之后无法删除源文件。
PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问
发生了这样的报错,而我尝试手动去删除源文件,也出现了该文件已被python打开,无法操作的提示。
解释
字面意思,这个文件已经被占用了,你无法访问他。
代码
def merge_pdf(name,file_all,target_path):
total=PdfFileWriter()
totalPages=0
for pdf_file in file_all:
print(pdf_file)
#读取pdf文件
pic=open(pdf_file,'rb')
input_pdf=PdfFileReader(pic)
#获取pdf总页数
pagecount=input_pdf.getNumPages()
print(pagecount)
totalPages+=pagecount
#遍历每个pdf文件
for iPage in range(pagecount):
#将每一页合并过去
total.addPage(input_pdf.getPage(iPage))
#pic.close()
#os.remove(pdf_file)
print(totalPages,'份pdf文件合并中......')
target_name=name+'.pdf'
new=os.path.join(target_path,target_name)
with open(new,'wb') as outputfile:
total.write(outputfile)
原因
原因是我读取完源文件之后没有及时关闭,导致他一直在存在缓存中。
我又尝试在注释位置进行关闭删除操作,我成功的删除了源pdf文件。
但我惊奇地发现合并出来的文件全是空白。
原来是我将源文件删除了,导致写入的时候没有数据。
解决
我将写入操作插入到关闭删除之前。
成功达到了合并之后删除源文件的目的。