如何覆盖Python当前正在读取的文件

Bri*_*ian 3 python pdf input overwrite

我不太确定说出这个的最佳方式,但我想做的是读取pdf文件,进行各种修改,并将修改后的pdf保存在原始文件上.截至目前,我能够将修改后的pdf保存到单独的文件中,但我希望替换原始文件,而不是创建新文件.

这是我目前的代码:

from pyPdf import PdfFileWriter, PdfFileReader

output = PdfFileWriter()
input = PdfFileReader(file('input.pdf', 'rb'))
blank = PdfFileReader(file('C:\\BLANK.pdf', 'rb'))

# Copy the input pdf to the output.
for page in range(int(input.getNumPages())):
    output.addPage(input.getPage(page))

# Add a blank page if needed.
if (input.getNumPages() % 2 != 0):
    output.addPage(blank.getPage(0))

# Write the output to pdf.
outputStream = file('input.pdf', 'wb')
output.write(outputStream)
outputStream.close()
Run Code Online (Sandbox Code Playgroud)

如果我更改outputStream为不同的文件名,它工作正常,我只是不能保存输入文件,因为它仍在使用.我试过.close()了流,但它也给了我错误.

我觉得这有一个相当简单的解决方案,我没有找到任何运气.

谢谢!

Ste*_*joa 7

您始终可以将临时输出文件重命名为旧文件:

import os
f = open('input.pdf', 'rb')
# do stuff to temp.pdf
f.close()
os.rename('temp.pdf', 'input.pdf')
Run Code Online (Sandbox Code Playgroud)