Python 3.x 如何在Python3中正确打开、处理和打印文件?
我有一个带有IBM852编码的文件。我可以在我的文本编辑器中用该编码打开它时确认它 我想打开该文件,将其写入另一个Python 3.x 如何在Python3中正确打开、处理和打印文件?,python-3.x,Python 3.x,我有一个带有IBM852编码的文件。我可以在我的文本编辑器中用该编码打开它时确认它 我想打开该文件,将其写入另一个.rtf文本文件,然后打印它。我这样试过,但总是出错: 文件“print_rawpcl.py”,第38行,d.write格式(原始数据) 文件“C:\Python34\lib\encodings\cp1250.py”,第19行,编码 返回codecs.charmap\u encode(输入、自身错误、编码表)[0] nicodeEncodeError:“charmap”编解码器无法对
.rtf
文本文件,然后打印它。我这样试过,但总是出错:
文件“print_rawpcl.py”,第38行,d.write格式(原始数据)
文件“C:\Python34\lib\encodings\cp1250.py”,第19行,编码返回codecs.charmap\u encode(输入、自身错误、编码表)[0] nicodeEncodeError:“charmap”编解码器无法对位置中的字符进行编码 522-601:字符映射到未定义 正确的方法是如何获取此文件,在另一个文件中重写并通过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使用写字板打印它,因为当从记事本打印时,我会得到文件标题和页码,而我不会