当前位置: 首页> 游戏> 单机 > 【Python小技巧】使用python一键批量按顺序打印目录下所有文件(pdf,word、图片统统一起打印,不想打印的也可以跳过,限制打印解除限制再打印)

【Python小技巧】使用python一键批量按顺序打印目录下所有文件(pdf,word、图片统统一起打印,不想打印的也可以跳过,限制打印解除限制再打印)

时间:2025/7/15 4:43:01来源:https://blog.csdn.net/popboy29/article/details/142331326 浏览次数:0次

文章目录

  • 前言
  • 一、批量打印文件二三事
  • 二、批量打印文件完整代码
  • 总结


前言

为迎接检查,需要提供很多文件,还要求打印。
打印文件本身没什么难度,问题是批量打印文件,文件还在不同目录,目录还套目录,还要求按顺序打印,有pdf文件,还有图片,一个一个文件打开,一个一个点打印,再按顺序归档,这谁记得住啊!

不行,我得找python帮忙!


一、批量打印文件二三事

  1. 文件再多,目录再多,我们用一个os.walk(directory)就可遍历目录了。逐个按顺序打印,那就不在话下了。
    for root, dirs, files in os.walk(directory):# 获取目录中所有文件和文件夹的名字for file in files:win32api.ShellExecute(0, "print", file, None, ".", 0)
  1. pdf、word等文件直接打印就OK。Excel文件比较特殊,有些表格超出了打印区域,需要手工调节一下再打印。所以目录下这些文件需要跳过。
            # 跳过指定扩展名的文件,避免误打印。Excel文件因为表格多,有些不再一页内,建议单独打印。if os.path.isfile(filename) and file.lower().endswith(skip_ext):continue
  1. 打印途中碰到图片文件,python打印罢工了。这个可怎么好?对了,把它们转成pdf再打印不就OK了吗?
def convert_images_to_pdf(image_path_list, output_path):# 传入图片路径列表,将其按顺序合成pdf文件from PIL import Image # pip install Pillow 安装此包images = []for image_path in image_path_list:image = Image.open(image_path)images.append(image.convert("RGB"))images[0].save(output_path, save_all=True, append_images=images[1:])print(f'将所有图片合成为PDF文件:{output_path}')
  1. 咦?打印个文件还有报错:无法打印此文件。仔细检查,有些pdf文件设置了禁止打印的权限。这个嘛,也难不倒咱。
def decrypt_pdf(filepath):# 碰到不能打印的PDF,使用这个转存一下import pikepdfwith pikepdf.open(filepath) as pdf:file = filepath.replace(".pdf", "")newfile = f"{file}_转存非加密文件.pdf"pdf.save(newfile)return newfile

二、批量打印文件完整代码

import os,time
import win32apidef convert_images_to_pdf(image_path_list, output_path):# 传入图片路径列表,将其按顺序合成pdf文件from PIL import Image # pip install Pillow 安装此包images = []for image_path in image_path_list:image = Image.open(image_path)images.append(image.convert("RGB"))images[0].save(output_path, save_all=True, append_images=images[1:])print(f'将所有图片合成为PDF文件:{output_path}')def decrypt_pdf(filepath):# 碰到不能打印的PDF,使用这个转存一下import pikepdfwith pikepdf.open(filepath) as pdf:file = filepath.replace(".pdf", "")newfile = f"{file}_转存非加密文件.pdf"pdf.save(newfile)return newfiledef print_file(filename):# 打印单个文件win32api.ShellExecute(0, "print", filename, None, ".", 0)def print_files_in_directory(directory,skip_ext=('.xlsx', '.xls', '.doc', '.docx', '.pdf'),img_ext=('.png', '.jpg', '.jpeg', '.bmp')):# 打印目录下所有文件image_path_list = []for root, dirs, files in os.walk(directory):# 获取目录中所有文件和文件夹的名字for file in files:filename = os.path.join(root, file)# 跳过指定扩展名的文件,避免误打印。Excel文件因为表格多,有些不再一页内,建议单独打印。if os.path.isfile(filename) and file.lower().endswith(skip_ext):continue# 遇到图片文件,将其路径保存到列表image_path_list,后续合成pdf后打印if os.path.isfile(filename) and file.lower().endswith(img_ext):image_path_list.append(filename)print(f'准备开始打印文件{filename}')win32api.ShellExecute(0, "print", filename, None, ".", 0)# 频繁打印容易导致电脑卡顿,故打印一个文件停一会儿等待打印机输出。time.sleep(10)# 如果有图片则将清单合成为PDF文件后打印,单独打印图片太慢if image_path_list:print(f'图片文件路径列表image_path_list:\n{image_path_list}')output_path = r'd:\image2pdf_temp.pdf'convert_images_to_pdf(image_path_list, output_path)print(f'准备开始打印图片合成PDF文件{output_path}')win32api.ShellExecute(0, "print", output_path, None, ".", 0)print('所有文件已打印完毕!')if __name__ == '__main__':print_files_in_directory(r'D:\需打印文件包\材料',skip_ext=('.xlsx', '.xls')) # 修改为自己的文件路径,skip_ext表示哪些扩展名的文件跳过打印if 0:# 碰到不能打印的PDF,使用这个转存一下再打印filepath = r'D:\需打印文件包\材料\限制打印的文件.pdf'newfile = decrypt_pdf(filepath)print_file(newfile)

总结

以上方法,经过实践,批量打印几千个文件,那就是喝杯咖啡的事儿。

别人还在忙着打开目录,打开文件,打印文件,关闭文件,再打开再打印再关闭。你只需要运行一下,就可以去泡杯咖啡去品尝了。只要打印机纸墨管够,剩下的就是打印完去拿回来就完成了。

如果有帮到你,不妨用您发财的小手打赏一杯咖啡钱,让我们一同分享轻松办公的喜悦!

关键字:【Python小技巧】使用python一键批量按顺序打印目录下所有文件(pdf,word、图片统统一起打印,不想打印的也可以跳过,限制打印解除限制再打印)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: