PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问

今天进行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文件。

但我惊奇地发现合并出来的文件全是空白。

原来是我将源文件删除了,导致写入的时候没有数据。

解决

我将写入操作插入到关闭删除之前。

成功达到了合并之后删除源文件的目的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值