使用 PyPDF2 批量旋转 PDF 文件
Batch rotate PDF files with PyPDF2
我一直在编写一个代码来批量旋转文件夹内的 PDF 文件,但我找不到一种方法来迭代和更改旋转文件的目标文件夹。
我的目的是将新文件以相同的名称保存在另一个文件夹中。
from os import listdir
from PyPDF2 import PdfReader, PdfWriter
# Collect files
root = "C:\z_PruebPy\pdf"
archs = []
for x in listdir(root):
archs.append(root + x)
# Batch rotate
for arch in archs:
pdf_in = open(arch, "rb")
reader = PdfReader(pdf_in)
writer = PdfWriter()
for page in reader.pages:
page.rotate_clockwise(270)
writer.add_page(page)
with open(arch, "wb") as pdf_out: # ????????
writer.write(pdf_out)
pdf_in.close()
您必须为 PdfFileWriter 提供指向新位置的文件指针。
此外,您不需要创建列表并迭代列表,只需迭代 os.listdir
结果。
最后你有未使用的变量,比如 loc
。
我稍微清理了你的代码。
假设您创建了输出文件夹,这应该可行:
from os import listdir
from PyPDF2 import PdfReader, PdfWriter
input_dir = "C:\z_PruebPy\pdf\"
output_dir = "C:\z_PruebPy\output_pdf\"
for x in listdir(input_dir):
if not x.endswith(".pdf"):
continue
reader = PdfReader(input_dir + x)
writer = PdfWriter()
for page in reader.pages:
page.rotate_clockwise(270)
writer.add_page(page)
with open(output_dir + x, "wb") as pdf_out:
writer.write(pdf_out)
我一直在编写一个代码来批量旋转文件夹内的 PDF 文件,但我找不到一种方法来迭代和更改旋转文件的目标文件夹。
我的目的是将新文件以相同的名称保存在另一个文件夹中。
from os import listdir
from PyPDF2 import PdfReader, PdfWriter
# Collect files
root = "C:\z_PruebPy\pdf"
archs = []
for x in listdir(root):
archs.append(root + x)
# Batch rotate
for arch in archs:
pdf_in = open(arch, "rb")
reader = PdfReader(pdf_in)
writer = PdfWriter()
for page in reader.pages:
page.rotate_clockwise(270)
writer.add_page(page)
with open(arch, "wb") as pdf_out: # ????????
writer.write(pdf_out)
pdf_in.close()
您必须为 PdfFileWriter 提供指向新位置的文件指针。
此外,您不需要创建列表并迭代列表,只需迭代 os.listdir
结果。
最后你有未使用的变量,比如 loc
。
我稍微清理了你的代码。
假设您创建了输出文件夹,这应该可行:
from os import listdir
from PyPDF2 import PdfReader, PdfWriter
input_dir = "C:\z_PruebPy\pdf\"
output_dir = "C:\z_PruebPy\output_pdf\"
for x in listdir(input_dir):
if not x.endswith(".pdf"):
continue
reader = PdfReader(input_dir + x)
writer = PdfWriter()
for page in reader.pages:
page.rotate_clockwise(270)
writer.add_page(page)
with open(output_dir + x, "wb") as pdf_out:
writer.write(pdf_out)