Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在此PDF水印移除脚本中添加批处理操作?_Pdf_Python 3.x_Watermark - Fatal编程技术网

如何在此PDF水印移除脚本中添加批处理操作?

如何在此PDF水印移除脚本中添加批处理操作?,pdf,python-3.x,watermark,Pdf,Python 3.x,Watermark,这个脚本并不是我精心设计的,它允许我从PDF文件中删除水印。问题是它没有进行批处理操作的选项,我在同一个目录中有1000多个PDF文件 from PyPDF2 import PdfFileReader, PdfFileWriter def removeWatermark(input_fname: str, output_fname: str): with open(input_fname, "rb") as inputFile, open(output_fname

这个脚本并不是我精心设计的,它允许我从PDF文件中删除水印。问题是它没有进行批处理操作的选项,我在同一个目录中有1000多个PDF文件

from PyPDF2 import PdfFileReader, PdfFileWriter

def removeWatermark(input_fname: str, output_fname: str):

    with open(input_fname, "rb") as inputFile, open(output_fname, "wb") as outputFile:

        reader = PdfFileReader(inputFile)
        writer = PdfFileWriter()

        for n in range(reader.numPages):

            page = reader.getPage(n)
            del page["/Contents"][-1]

            writer.addPage(page)

        writer.write(outputFile)

if __name__ == "__main__":

    import sys

    if len(sys.argv) != 3:
        raise RuntimeError("Arguments not correct!")

    removeWatermark(sys.argv[1], sys.argv[2])
如果有人能帮我,我很感激

依赖项:PyPDF2和PDFtk

我解决了这个问题:

import os
from PyPDF2 import PdfFileReader, PdfFileWriter

path = os.path.dirname(__file__)
files = os.listdir(path)

def removeWater(inputfilename,outputfilename):

        "input"
        inputFile = open(inputfilename, "rb")
        outputFile = open(outputfilename, "wb")
        
        pdfReader = PdfFileReader(inputFile)
        pdfWriter = PdfFileWriter()
        
        for n in range(pdfReader.numPages):

            page = pdfReader.getPage(n)
            del page["/Contents"][-1]

            pdfWriter.addPage(page)

        pdfWriter.write(outputFile)

if __name__ == '__main__':   
    for filename in files:
            if filename.endswith(('.pdf')):
                removeWater(os.path.splitext(filename)[0] + ".pdf",os.path.splitext(filename)[0] + "- limpo" + ".pdf")

这个想法将是一个执行循环。我正在使用Windows。我只有一门算法和C语言的课程。我认为这很容易,但我不能创建这个循环。尽管购买了一门基本的python课程,但讲师在操作文件方面并没有走得太远。python调用可以像cmd、powershell或bash中的任何shell实用程序一样简单地重复。那么问题出在哪里?!如果脚本在单个文件上运行良好,则无需对脚本进行任何更改。谢谢,但我已经解决了它。我编辑了问题,把它写下来作为答案,而不是对问题的编辑。你可以自己回答。您希望通过Python实现循环。