Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.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 URL编码的urllib.urlencode替代方案_Python_Urlencode_Stringio - Fatal编程技术网

Python URL编码的urllib.urlencode替代方案

Python URL编码的urllib.urlencode替代方案,python,urlencode,stringio,Python,Urlencode,Stringio,我正在尝试向只接受XML的API发送请求。我使用elementtree.SimpleXMLWriter构建XML树,它存储在一个StringIO对象中。一切都很好 问题是我必须对StringIO对象进行URL编码才能将其发送到API。但当我尝试时,我得到: File "C:\Python27\lib\urllib.py", line 1279, in urlencode if len(query) and not isinstance(query[0], tuple): Attrib

我正在尝试向只接受XML的API发送请求。我使用
elementtree.SimpleXMLWriter
构建XML树,它存储在一个StringIO对象中。一切都很好

问题是我必须对StringIO对象进行URL编码才能将其发送到API。但当我尝试时,我得到:

  File "C:\Python27\lib\urllib.py", line 1279, in urlencode
    if len(query) and not isinstance(query[0], tuple):
AttributeError: StringIO instance has no attribute '__len__'
显然,这一点已经被讨论过了。我只是想知道是否还有其他用于URL编码字符串的内置函数,特别是那些不需要调用
len()
的函数,这样我就可以编码这个StringIO对象了

谢谢


PS:我愿意使用StringIO以外的东西来存储XML对象,如果这是一个更简单的解决方案的话。我只需要为SimpleXMLWriter提供某种类型的“”来存储XML。

您可以通过调用其getvalue()方法从StringIO获取字符串,并将其传递给urllib。

您可以通过调用其getvalue()方法从StringIO获取字符串,并将其传递给urllib。

StringIO实例就像一个文件,不像一根绳子。它没有
len()
。使用
my\u string\u io\u varaible.getvalue()
获取字符串值,并将其传递给需要字符串的
urlencode()


也许您可以对嵌入到XML中的URL进行编码,而不是整个过程。

StringIO
实例就像一个文件,而不是字符串。它没有
len()
。使用
my\u string\u io\u varaible.getvalue()
获取字符串值,并将其传递给需要字符串的
urlencode()

也许您可以对嵌入到XML中的URL进行
urlencode
URL编码,而不是整个过程