File "/usr/local/lib/python3.0/cgi.py", line 477, in __init__
    self.read_urlencoded()
  File "/usr/local/lib/python3.0/cgi.py", line 577, in read_urlencoded
    self.strict_parsing):
  File "/usr/local/lib/python3.0/urllib/parse.py", line 377, in parse_qsl
    pairs = [s2 for s1 in qs.split('&') for s2 in s1.split(';')]
TypeError: Type str doesn't support the buffer API

有人能告诉我如何避免这种情况吗?我是通过把数据输入到cgi.Fieldstorage中来实现这一点的,而我似乎没有别的办法.

推荐答案

urllib正在努力做到:

b'a,b'.split(',')

这不管用.字节字符串和unicode字符串在Py3k中的混合甚至比以前更不顺畅 — 早出晚归,而不是故意出错.

因此,错误相当隐晦地告诉您"不能将字节字符串传递给urllib".解析'.假设您正在执行POST请求,其中表单编码的字符串作为内容体进入cgi;内容主体仍然是字节字符串/流,因此它现在与新的urllib冲突.

是的,这是cgi的一个缺陷.py,另一个2to3转换的受害者,对于新的字符串模型还没有得到正确的修复.它应该将传入的字节流转换为字符,然后再将它们传递给urllib.

我有没有提到Python 3.0的库(尤其是与web相关的库)仍然相当简陋?:-)

Python-3.x相关问答推荐

需要使用regex匹配字符串的帮助,直到最后一次出现开闭括号,开闭括号中的值是可选的

如何将函数映射到所有命名元组的元素?

在特定条件下从 DataFrame 中提取特定组

如何根据索引子列表对元素列表进行分组或批处理?

移动所有列的数据帧值以使其单调递增

Python3:是否可以将变量用作函数调用的一部分

如何在 Python 中 cv2 的窗口标题上动态更新 FPS

Python ** 用于负数

正则表达式:匹配字符串中的分隔符(字母和特殊字符)以形成新的子字符串

使用 python 正则表达式匹配日期

__new__ 方法给出错误 object.__new__() 只接受一个参数(要实例化的类型)

Python中调用者函数的访问变量

python asyncio - 如何等待取消的屏蔽任务?

在 ubuntu 20.04 中安装 libpq-dev 时出现问题

在 WSL (Ubuntu) 中为 python3 安装 venv

在python中打印下标

为什么在 Python 3 中实例的 __dict__ 的大小要小得多?

python中的订单字典索引

matplotlib - 模块sip没有属性setapi

Python 无法处理以 0 开头的数字字符串.为什么?