你可以从python打印文件吗?

Tim*_*man 3 python

有没有办法将输出发送到打印机而不是Python中的屏幕?或者是否有可以从python中调用以打印文件的服务例程?也许我可以导入一个允许我这样做的模块?

aba*_*ert 5

大多数平台(包括Windows)都有代表打印机的特殊文件对象,只需将文本写入文件即可打印文本.

在Windows中,特殊文件对象名称类似LPT1:,LPT2:,COM1:等你需要知道哪一个您的打印机连接到(或者询问用户以某种方式).

您的打印机可能未连接到任何此类特殊文件,在这种情况下,您需要启动控制面板并正确配置它.(对于远程打印机,这甚至可能需要设置"虚拟端口".)

无论如何,写入LPT1:或COM1:写入任何其他文件完全相同.例如:

with open('LPT1:', 'w') as lpt:
    lpt.write(mytext)
Run Code Online (Sandbox Code Playgroud)

要么:

lpt = open('LPT1:', 'w')
print >>lpt, mytext
print >>lpt, moretext
close(lpt)
Run Code Online (Sandbox Code Playgroud)

等等.

如果您已经在文件中打印了文本,则可以像这样打印:

with open(path, 'r') as f, open('LPT1:', 'w') as lpt:
    while True:
        buf = f.read()
        if not buf: break
        lpt.write(buf)
Run Code Online (Sandbox Code Playgroud)

或者,更简单(未经测试,因为我这里没有Windows框),这应该工作:

import shutil
with open(path, 'r') as f, open('LPT1:', 'w') as lpt:
    shutil.copyfileobj(f, lpt)
Run Code Online (Sandbox Code Playgroud)

它可能只是shutil.copyfile(path, 'LPT1:'),但文档说"特殊文件,如字符或块设备和管道不能使用此功能复制",所以我认为使用更安全copyfileobj.