如何在Python3中正确打开,处理和打印文件?

时间:2017-10-12 13:15:46

标签: python-3.x

我有一个IBM852编码的文件。我可以在使用该编码的texteditor中打开它时确认。

我想打开该文件,将其写入另一个.rtf文本文件,然后打印出来。我试过这样,但总是收到错误:

  

文件“print_rawpcl.py”,第38行,在d.write(raw_data)中   文件“C:\ Python34 \ lib \ encodings \ cp1250.py”,第19行,在编码中   return codecs.charmap_encode(input,self.errors,encoding_table)[0]   nicodeEncodeError:'charmap'编解码器无法对字符进行编码   522-601:字符映射到 undefined

获取此文件的正确方法是什么,将其重写在另一个文件中并通过ShellExecute将其发送到打印机?

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import sys
import time
import win32api
import win32print
import tempfile


my_encoding = "cp852"

# If there is command line argument, the first one is our file_to_print
if len(sys.argv) > 1:
    file_to_print = sys.argv[1]
else:
    print("No input file")
    sys.exit()

try:
    with open(file_to_print, "r", encoding=my_encoding) as f:
        raw_data = f.read()
    filename = tempfile.mktemp(".rtf")
    with open(filename, "w") as d:
        d.write(raw_data)
        win32api.ShellExecute(
          0,
          "print",
          filename,
          '/d:"%s"' % win32print.GetDefaultPrinter(),
          ".",
          0
        )
except OSError as e:
    print("Failed: {}".format(e))

print("Script ended. Everything OK!")
time.sleep(2)

我将此复制到rtf,以便Windows使用写字板打印,因为从记事本打印时,我得到文件标题和页码,我不会。

0 个答案:

没有答案