Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何在Python3中正确打开、处理和打印文件?_Python 3.x - Fatal编程技术网

Python 3.x 如何在Python3中正确打开、处理和打印文件?

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”编解码器无法对

我有一个带有IBM852编码的文件。我可以在我的文本编辑器中用该编码打开它时确认它

我想打开该文件,将其写入另一个
.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使用写字板打印它,因为当从记事本打印时,我会得到文件标题和页码,而我不会