Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.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列表理解仅返回最后一项_Python_Image_Python Requests_List Comprehension - Fatal编程技术网

Python列表理解仅返回最后一项

Python列表理解仅返回最后一项,python,image,python-requests,list-comprehension,Python,Image,Python Requests,List Comprehension,我正在尝试使用post请求发布多个文件 所述格式为: 所以我试着用一个列表来理解。但只有最后一张图像正在上传。我有一种感觉,因为所有图像都有相同的名称“visuals”,所以理解力凌驾于图像之上。但是我要求所有的视频都有一个名字“visuals” images=[list of image URLS] files=[('visuals',(str(index)+'.jpg',requests.get(image).content,'image/jpeg')) for index,image in

我正在尝试使用post请求发布多个文件

所述格式为:

所以我试着用一个列表来理解。但只有最后一张图像正在上传。我有一种感觉,因为所有图像都有相同的名称“visuals”,所以理解力凌驾于图像之上。但是我要求所有的视频都有一个名字“visuals

images=[list of image URLS]
files=[('visuals',(str(index)+'.jpg',requests.get(image).content,'image/jpeg')) for index,image in enumerate(images)]
requests.post(script.php,files=files)
例如,如果有20个图像,那么只有20.jpg被发送到myscript.php

答复(不起作用):


requests.post的
files
参数应该是
dict
。参见示例。由于您将其与
列表
对象一起传递,因此它将在内部强制转换为
dict
对象。在类型转换期间,后一个元素将使用相同的键值覆盖前一个元素!由于中的所有元素都具有相同的键“visuals”,因此只有最后一个元素将保留在最终的
dict
对象中

此问题已在请求的问题页面中得到回答

为数据提供的元组列表已调用dict()。字典(显然)不允许重复键,但元组列表中有重复键,因此iterable中的最后一项接受该键的值。。。所以我认为这是一种故意的行为


等等,如果您像文档那样打开
而不是
请求。get
,它会工作吗?复制此代码:
files=[('visuals',(str(index)+'.jpg',open(image,'rb'),'image/jpeg'))用于索引,image in enumerate(images)]
但它们是URL而不是本地文件。我怀疑对于图像的每次迭代,列表中的最后一个都会被覆盖。我只得到最后一张图片,因为我想是同一个名字?你有没有试着打印出你的列表理解结果,以确保它具有你认为的值?但这只适用于一个文件。我需要多个同名文件。当我使用该名称进行dict时,会出现一个错误“太多值无法解包”,这表明它是错误的。我将为您的建议添加上述代码。建议与你的答案不同。对于具有相同名称的多个数据字段,它使用具有相同名称的元组。恐怕无法放置具有相同名称的多个数据字段。这属于中未定义的行为。
请求
urlib3
都不允许这种用法。我认为文档对此不是很清楚。如果跟踪源代码,
请求
在内部调用
urlib3.encode\u multipart\u formdata
,将元组或列表转换为字典。谢谢。我将不得不循环每个图像并分别发布它。
images=[list of image URLS]
files=[('visuals',(str(index)+'.jpg',requests.get(image).content,'image/jpeg')) for index,image in enumerate(images)]
requests.post(script.php,files=files)
  images=response.xpath(root+'/photos//url/text()').extract()
  visuals=[(str(index)+'.jpg',requests.get(image).content,'image/jpeg') for index,image in enumerate(images)]
  requests.post(triggers,data={'json':json.dumps(array)},files={'visuals':visuals})