os.startfile()在Fedora(Linux)平台无法运行,如何实现打印功能?
Linux(Fedora)环境下Python打印功能实现方案
Fedora 默认使用CUPS作为系统打印服务,你可以通过调用CUPS提供的lp命令实现文本打印,替代Windows下的os.startfile操作。
调整说明
- 原有代码中的
tempfile.mktemp()已被官方标记为不安全方法,建议改用tempfile.NamedTemporaryFile生成临时文件 - 打印操作通过Python标准库
subprocess调用系统命令实现,无需额外安装第三方依赖
完整可运行代码示例
import tempfile import subprocess import os from tkinter import END # 生成临时文本文件 with tempfile.NamedTemporaryFile(mode='w', suffix='.txt', delete=False) as f: f.write(self.txt_billArea.get('1.0', END)) temp_file_path = f.name try: # 基础打印调用 subprocess.run(['lp', temp_file_path], check=True) # 可选进阶参数: # 指定打印机:subprocess.run(['lp', '-d', '你的打印机名', temp_file_path], check=True) # 打印多份:subprocess.run(['lp', '-n', '3', temp_file_path], check=True) 这里3代表打印3份 finally: # 打印完成后删除临时文件 os.unlink(temp_file_path)
补充说明
你可以在Fedora终端执行lpstat -p命令,查看当前系统已配置的所有打印机名称。如果需要打印PDF、图片等非文本格式文件,lp命令也原生支持,直接传入对应文件路径即可。
内容的提问来源于stack exchange,提问作者Shibu Dhara
相关产品推荐
相关产品推荐

