2017-10-24 18 views
1

폴더에서 pdf 파일을 일괄 적으로 회전하는 코드를 작성했지만 회전 된 파일의 대상 폴더를 반복하고 변경하는 방법을 찾을 수 없습니다. 감사Python - PyPDF2로 PDF를 일괄로 로테이션

import PyPDF2 
from os import listdir 

di = "C:\z_PruebPy\pdf" 

archs = [] 

listarch = [] 

loc = r"C:/z_PruebPy/pdf/" 

for x in listdir(di): 
    archs.append(loc+x) 

for arch in listarch: 
    pdf_in = open(arch, 'rb') 
    pdf_reader = PyPDF2.PdfFileReader(pdf_in) 
    pdf_writer = PyPDF2.PdfFileWriter() 

    for pagenum in range(pdf_reader.numPages): 
     page = pdf_reader.getPage(pagenum) 
     page.rotateClockwise(270) 
     pdf_writer.addPage(page) 

    pdf_out = open(arch, 'wb') #???????? 
    pdf_writer.write(pdf_out) 
    pdf_out.close() 
    pdf_in.close() 

답변

1

당신은 PdfFileWriter에게 새 위치에 파일 포인터를 제공해야, 다른 폴더에 같은 이름으로 새 파일을 저장합니다. 또한 목록을 생성하고 목록에서 반복 할 필요가 없습니다. os.listdir 결과를 반복하면됩니다. 마지막으로 loc과 같은 사용하지 않는 변수가 있습니다. 코드를 약간 청소했습니다.

그래서 이것이 당신이 출력 폴더 생성 가정 작동합니다 : 당신이 대답을 좋아한다면

from PyPDF2 import PdfFileReader, PdfFileWriter 
from os import listdir 

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 
    pdf_in = open(input_dir + x, 'rb') 
    pdf_reader = PdfFileReader(pdf_in) 
    pdf_writer = PdfFileWriter() 
    for pagenum in range(pdf_reader.numPages): 
     page = pdf_reader.getPage(pagenum) 
     page.rotateClockwise(270) 
     pdf_writer.addPage(page) 
    pdf_out = open(output_dir + x, 'wb') 
    pdf_writer.write(pdf_out) 
    pdf_out.close() 
    pdf_in.close() 
+0

감사합니다!, 내가 – fcr

+0

@fcr을 원하는 정확히 무엇을, 그것의 왼쪽에있는 V 기호를 클릭 동의하시기 바랍니다 대답 :) –