030批量加密pdf文件

import PyPDF2
import os


# 如果参数pathname指定的文件夹不存在,就新建一个
def create_dir(pathname):
    if not os.path.exists(pathname):
        os.mkdir(pathname)


# 取得path文件夹下的PDF文件
def get_filename(path):
    # 新建一个列表变量,用来存储PDF文件的绝对路径
    list_filename = []
    # 遍历文件夹下的文件
    for filename in os.listdir(path):
        # 只获取PDF文件名
        if filename.endswith('.pdf'):
            # 将路径和文件名连接起来,
            # 注意join()连结参数的字符是"\\",是两个反斜杠
            filename_full = os.path.join(path, filename)
            # 将文件绝对路径加入到列表变量中
            list_filename.append(filename_full)
    return list_filename


# 设置PDF文件的函数
# 参数list_file是要加密的PDF文件名,
# 参数outpath是加密后的PDF文件放在那个文件夹
# 参数passwd是加密的密码
def set_pass(list_file, outpath, passwd):
    # 如果文件夹不存在就新建一个
    create_dir(outpath)
    for file in list_file:
        # 读入PDF文件
        file_obj = open(file, 'rb')
        # 建立一个PDF文件读对象
        pdf_reader_obj = PyPDF2.PdfFileReader(file_obj)
        # 建立一个PDF文件写对象
        pdf_writer_obj = PyPDF2.PdfFileWriter()
        # 循环读入PDF文件的每一页
        for page_index in range(pdf_reader_obj.numPages):
            # 依据页号取得一页PD内容
            page_obj = pdf_reader_obj.getPage(page_index)
            # 在PDF文件写对象中将这一页加入
            pdf_writer_obj.addPage(page_obj)
        # 将文件加密
        pdf_writer_obj.encrypt(passwd)
        # 由于join()连结参数的字符是"\\",
        # 所以下面的语句取出PDF的文件名(不包括路径)
        filename = file.split('\\')[-1]
        # 以写的方式打开文件,这个文件要放在outpath指定的文件夹中
        file_out = open(os.path.join(outpath, filename), 'wb', )
        # 将加密后的PDF写放相应文件夹中
        pdf_writer_obj.write(file_out)
        file_obj.close()
        file_out.close()


# 主程序main
if __name__ == '__main__':
    files = get_filename('.\pdf_dir')
    set_pass(files, '.\pdf_pass', 'test')

这段代码是一个Python脚本,用于将指定文件夹下的PDF文件加密,
并将加密后的文件保存到另一个文件夹中。以下是对代码的解析:
  1. 导入PyPDF2和os模块:

    import PyPDF2
    import os
    
  2. 定义创建文件夹函数create_dir,如果指定的文件夹不存在,则创建一个新的文件夹:

    def create_dir(pathname):
        if not os.path.exists(pathname):
            os.mkdir(pathname)
    
  3. 定义获取指定文件夹下PDF文件名的函数get_filename,返回一个包含PDF文件绝对路径的列表:

    def get_filename(path):
        list_filename = []
        for filename in os.listdir(path):
            if filename.endswith('.pdf'):
                filename_full = os.path.join(path, filename)
                list_filename.append(filename_full)
        return list_filename
    
  4. 定义设置PDF文件密码的函数set_pass,参数包括要加密的PDF文件列表,加密后的文件夹路径和密码:

    def set_pass(list_file, outpath, passwd):
        create_dir(outpath)
        for file in list_file:
            file_obj = open(file, 'rb')
            pdf_reader_obj = PyPDF2.PdfFileReader(file_obj)
            pdf_writer_obj = PyPDF2.PdfFileWriter()
            for page_index in range(pdf_reader_obj.numPages):
                page_obj = pdf_reader_obj.getPage(page_index)
                pdf_writer_obj.addPage(page_obj)
            pdf_writer_obj.encrypt(passwd)
            filename = file.split('\\')[-1]
            file_out = open(os.path.join(outpath, filename), 'wb')
            pdf_writer_obj.write(file_out)
            file_obj.close()
            file_out.close()
    
  5. 主程序main,调用get_filename函数获取指定文件夹下的PDF文件列表,然后调用set_pass函数对文件进行加密:

    if __name__ == '__main__':
        files = get_filename('.\pdf_dir')
        set_pass(files, '.\pdf_pass', 'test')
    

以上是这段代码的解析。关于Markdown表格,这里是纯文本环境无法直接显示成表格形式,只能以纯文本方式呈现给您。如果您有相关问题需要解答,请告诉我具体问题,我将尽力为您提供帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是梦磊OL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值