Popen.communicate() 抛出 UnicodeDecodeError

2024-04-06

我有这个代码:

def __executeCommand(self, command: str, input: str = None) -> str:
    p = sub.Popen(command, stdout=sub.PIPE, stderr=sub.PIPE, stdin=sub.PIPE, universal_newlines=True)
    p.stdin.write(input)
    output, error = p.communicate()
    if (len(errors) > 0):
        raise EnvironmentError("Could not generate the key: " + error)
    elif (p.returncode != 0):
        raise EnvironmentError("Could not generate the key. Return Value: " + p.returncode)
    return output

我在该行中收到 UnicodeDecodeErroroutput, error = p.communicate():

Traceback (most recent call last):
  File "C:\Python34\lib\threading.py", line 921, in _bootstrap_inner
    self.run()
  File "C:\Python34\lib\threading.py", line 869, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Python34\lib\subprocess.py", line 1170, in _readerthread
    buffer.append(fh.read())
  File "C:\Python34\lib\encodings\cp1252.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 27: character maps to <undefined>

我怎样才能解决这个问题?


univeral_newlines=True启用文本模式。子进程输出(字节)使用解码locale.getpreferredencoding(False)字符编码为@cdosborn 提到 https://stackoverflow.com/a/29548914/4279.

如果不起作用,请提供实际情况encoding被使用的是command。和/或指定错误处理程序,例如'ignore','surrogateescape', etc https://docs.python.org/3/library/codecs.html#error-handlers as errors范围:

from subprocess import Popen, PIPE

def __executeCommand(self, command: str, input: str = None, 
                     encoding=None, errors='strict') -> str:
    text_mode = (encoding is None)
    with Popen(command, stdout=PIPE, stderr=PIPE, stdin=PIPE,
               universal_newlines=text_mode) as p:
        if input is not None and not text_mode:
            input = input.encode(encoding, errors) # convert to bytes
        output, err = p.communicate(input)
    if err or p.returncode != 0: 
        raise EnvironmentError("Could not generate the key. "
                               "Error: {}, Return Value: {}".format(
                                   ascii(err), p.returncode))
    return output if text_mode else output.decode(encoding, errors)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Popen.communicate() 抛出 UnicodeDecodeError 的相关文章

  • 为什么删除临时文件时出现WindowsError?

    我创建了一个临时文件 向创建的文件添加了一些数据 已保存 然后尝试将其删除 但我越来越WindowsError 编辑后我已关闭该文件 如何检查哪个其他进程正在访问该文件 C Documents and Settings Administra
  • Python - 来自 .进口

    我第一次尝试图书馆 我注意到解决图书馆内导入问题的最简单方法是使用如下结构 from import x from some module import y 我觉得这件事有些 糟糕 也许只是因为我不记得经常看到它 尽管公平地说我还没有深入研究
  • 保留完整姓氏,在 pandas 列中获取名字的首字母(如果有的话,还有中间名)

    我有一个 pandas 数据框 其中有一列表示几位网球运动员的姓氏和姓名 如下所示 Player 0 Roddick Andy 1 Federer Roger 2 Tsonga Jo Wilfred 我想保留完整的姓氏并获取姓名的首字母和中
  • 如何在Python中同时运行两只乌龟?

    我试图让两只乌龟一起移动 而不是一只接着另一只移动 例如 a turtle Turtle b turtle Turtle a forward 100 b forward 100 但这只能让他们一前一后地移动 有没有办法让它们同时移动 有没有
  • Keras:如何保存模型或权重?

    如果这个问题看起来很简单 我很抱歉 但是阅读 Keras 保存和恢复帮助页面 https www tensorflow org beta tutorials keras save and restore models https www t
  • 在 Django OAuth Toolkit 中安全创建新应用程序

    如何将 IsAdminUser 权限添加到 Django OAuth Toolkit 中的 o applications 视图 REST FRAMEWORK DEFAULT PERMISSION CLASSES rest framework
  • 一段时间后终止线程的最 Pythonic 方法

    我想在线程中运行一个进程 它正在迭代一个大型数据库表 当线程运行时 我只想让程序等待 如果该线程花费的时间超过 30 秒 我想终止该线程并执行其他操作 通过终止线程 我的意思是我希望它停止活动并优雅地释放资源 我认为最好的方法是通过Thre
  • Gspread如何复制sheet

    在 Stackoverflow 上进行谷歌搜索和搜索后 我想我找不到有关如何复制现有工作表 现有模板工作表 并将其保存到另一个工作表中的指南 根据文档 有重复表 https gspread readthedocs io en latest
  • Python新式类和__subclasses__函数

    有人可以向我解释为什么这有效 在 Python 2 5 中 class Foo object pass class Bar Foo pass print Foo subclasses 但这不是 class Foo pass class Ba
  • 使用 python 绘制正值小提琴图

    我发现小提琴图信息丰富且有用 我使用 python 库 seaborn 然而 当应用于正值时 它们几乎总是在低端显示负值 我发现这确实具有误导性 尤其是在处理现实数据集时 在seaborn的官方文档中https seaborn pydata
  • Geodjango距离查询未检索到正确的结果

    我正在尝试根据地理位置的接近程度来检索一些帖子 正如您在代码中看到的 我正在使用 GeoDjango 并且代码在视图中执行 问题是距离过滤器似乎被完全忽略了 当我检查查询集上的距离时 我得到了预期距离 1m 和 18km 但 18km 的帖
  • python中的[][](双方括号运算符)运算符是什么?

    我是 python 新手 我一直在寻找分配变量时进行三元运算的正确方法 我发现有人在堆栈溢出上发表了一个帖子 提出了这样的建议 var smaller bigger 7 gt 1 其中左边的值为 False 右边的值为 True 我运行它并
  • 返回表示每组内最大值的索引的一系列数字位置

    考虑一下这个系列 np random seed 3 1415 s pd Series np random rand 100 pd MultiIndex from product list ABDCE list abcde One Two T
  • 将seaborn.palplot轴添加到现有图形中以可视化不同调色板

    将seaborn人物添加到子图中是usually https seaborn pydata org examples cubehelix palette html创建图形时通过传递 ax 来完成 例如 sns kdeplot x y cma
  • Mac OSX 10.6 上的 Python mysqldb 不工作

    我正在使用 Python 2 7 并尝试让 Django 项目在 MySQL 后端运行 我已经下载了 mysqldb 并按照此处的指南进行操作 http cd34 com blog programming python mysql pyth
  • 如何与其他用户一起使用 pyenv?

    如何与其他用户一起使用 pyenv 例如 如果我在用户 test 的环境中安装了 pyenv 则当我以 test 身份登录时可以使用 pyenv 但是 当我以其他用户 例如 root 身份登录时如何使用 pyenv 即使你这么做了 我也会s
  • 从 pandas DataFrame 中删除少于 K 个连续 NaN

    我正在处理时间序列数据 我在从数据帧列中删除小于或等于阈值的连续 NaN 时遇到问题 我尝试查看一些链接 例如 标识连续 NaN 出现的位置以及计数 Pandas NaN 孔的游程长度 https stackoverflow com que
  • 将上下文管理器的动态可迭代链接到单个 with 语句

    我有一堆想要链接的上下文管理器 第一眼看上去 contextlib nested看起来是一个合适的解决方案 但是 此方法在文档中被标记为已弃用 该文档还指出最新的with声明直接允许这样做 自 2 7 版起已弃用 with 语句现在支持此
  • 多个对象以某种方式相互干扰[原始版本]

    我有一个神经网络 NN 当应用于单个数据集时 它可以完美地工作 但是 如果我想在一组数据上运行神经网络 然后创建一个新的神经网络实例以在不同的数据集 甚至再次同一组数据 上运行 那么新实例将产生完全错误的预测 例如 对 XOR 模式进行训练
  • 使用ssl和socket的python客户端身份验证

    我有一个 python 服务器 需要客户端使用证书进行身份验证 我如何制作一个客户端脚本 使用客户端证书由 python 中的服务器使用 ssl 和套接字模块进行身份验证 有没有仅使用套接字和 ssl 而不扭曲的示例 from OpenSS

随机推荐

  • 如何在 Swift 中通过部分标签文本搜索来定位 XCUIElement?

    我一直在使用这种方法定位 XCUIElements app staticTexts Full Label Text 但是如果我只知道标签文本的一部分怎么办 部分标签文本是动态生成的 例如 Item 1 Item 2 等 因此我想通过查找包含
  • 生成数据框中7列的所有组合并添加相应的行以生成新列

    我有一个类似于下面的数据框 Wave A B C 340 77 70 15 341 80 73 15 342 83 76 16 343 86 78 17 我想生成包含现有列的所有可能组合的列 我在这里显示了 3 列 但在我的实际数据中 我有
  • 查找与 colorBrewer 调色板接近的颜色的颜色名称

    我想使用R包SNA来做社交网络分析 SNA 仅使用 R 颜色名称 文本名称 为元素着色 我想从 ColorBrewer 调色板 set3 中找到与 R 中的颜色名称接近的匹配项 RGB 空间中没有太多精确匹配 require RColorB
  • 这个错误意味着什么以及如何解决它?

    我正在尝试在 android 中使用 NDK 构建 C 代码 我有一个有参数的方法vector lt vector
  • PHP 时区数据库损坏错误

    我有一个 WordPress 网站 今天突然停止工作了 当我查看日志时 我看到错误 错误 客户端 50 78 108 177 PHP 致命错误 strtotime 时区 数据库已损坏 这应该never happen 在谷歌上阅读后 有人说他
  • 为什么我应该在 Silverlight 应用程序中使用 MVVM?

    我想知道为什么我们应该使用 MVVM 来实现 Silverlight 应用程序 它有什么优点呢 我们不对 ViewModel 进行单元测试 所以我想要其他原因 以下是我对人们通常所说的一些优点的疑问 1 松耦合 当我们使用MVVM时 视图依
  • 在centos中设置Docker_Opts

    我需要设置 docker 在运行 amazon linux centos 的主机上侦听 tcp 0 0 0 0 4243 我看到的所有文档都告诉我运行以下命令 echo DOCKER OPTS H tcp 127 0 0 1 4243 gt
  • 我如何在 Delphi 中进行线程处理的各种方法之间进行选择?

    看来我终于要在我的 Delphi 2009 程序中实现某种线程了 如果只有一种方法可以做到这一点 我就会逃跑 但我看到了几种可能性 谁能解释一下它们之间有什么区别以及为什么我会选择其中一个而不是另一个 Delphi 中的 TThread 类
  • Android 设备管理员权限活动未启动

    我正在尝试以设备管理员身份启用我的应用程序 尝试调用授予我的应用程序权限成为设备管理员的活动的代码如下 import android app Activity import android app admin DevicePolicyMan
  • 将字符串格式的日期转换为字符串日期前一天的 nsdate 结果

    我搜索了我的问题 但没有找到任何相关的帮助 故事 用户按名称 开始日期 结束日期和注释创建连续事件 因此将所有字段保存在 Sqlite 数据库中 两个日期格式均为 yyyy MM dd 之后 当用户想要对事件执行操作时 应用程序会检查用户选
  • 如何使用 OpenCV triangulatePoints

    我正在努力获取 OpenCVtriangulatePoints功能来工作 我正在使用该函数与光流生成的点匹配 我使用来自单个移动摄像机的两个连续帧 位置 目前 这些是我的步骤 给出了内在函数 看起来就像人们所期望的那样 2 6551e 00
  • 动态为mysql查询中的所有字段名分配别名

    我的 mysll 数据库中有 2 个表 两个表都有很少的固定列和很少的动态列 字段 架构 我想用以下查询连接这两个表 SELECT FROM cd cd LEFT JOIN cd n cn ON cd id cn fk cd 我想要的结果是
  • 在新维度中堆叠数组

    假设我有三个数组 k np array 1 1 2 2 m np array 3 3 4 4 n np array 5 5 6 6 理想情况下 我希望获得形状为 3 2 2 的最终数组 即 array 1 1 2 2 3 3 4 4 5 5
  • Scala 模式匹配引用

    当模式匹配案例类时 您实际上如何引用它所匹配的类 这是一个例子来说明我的意思 sealed trait Value case class A n Int extends Value v match case A x gt doSomethi
  • 大对象不能在自动提交模式下使用

    我正在开发一个使用 spring 和 hibernate 的应用程序 我们使用 postgresql 作为数据库 当我尝试将记录插入到具有 OID 列的表中时 会引发以下错误 org hibernate exception GenericJ
  • 未处理的异常:无法测试没有大小的渲染框

    所以我正在尝试重新创建一个 UI 模板 这是代码 我试图通过调用RecentlyViewed 添加另一个水平GridView 但重新加载后它无法呈现 我不知道如何渲染它 我尝试过使用扩展的小部件和灵活的但都不起作用 return Scaff
  • iOS:UICollectionViewCell根据屏幕尺寸自动调整大小

    我试图在集合视图中创建 10 个单元格 与屏幕大小相同 当我在 iphone5s 模拟器中运行我的应用程序时 视图恰好包含 5 个单元格 但是当我切换到 iphone6p 模拟器时 视图包含超过 5 个单元格 我应该如何调整单元格大小 以使
  • 在按钮上应用滤色器

    我有很多带有很多不同背景颜色的按钮 我想知道是否有办法在点击时应用一些滤色镜 例如 我希望所有按钮在单击时变得更暗 它们保留了原来的颜色 但颜色更深了 有没有一种简单的方法可以做到这一点 或者我必须为每个按钮定义较暗的颜色 Thanks 我
  • 制作一个包含我的列表项的文本文件并对其应用正则表达式

    我应该编写一个代码来读取包含一些具有一些常见语言特征的单词的文本文件 对所有单词应用一些正则表达式 并写入一个包含更改后的单词的文件 现在假设我的文本文件名为abcd txt有这些话 king sing ping cling booked
  • Popen.communicate() 抛出 UnicodeDecodeError

    我有这个代码 def executeCommand self command str input str None gt str p sub Popen command stdout sub PIPE stderr sub PIPE std