2016-08-11 63 views
-3

我得到的图像的像素大小,我需要在像素如何在列表python中编写if else条件?

写一个if条件,如果JPG或TIFF:做一些别的 “0,0”

我如何能在下面写代码?

def get(self, request, **response_kwargs):  

    main_request = MediaRequest.objects.get(request_unique_id=self.kwargs['request_unique_id']) 

    files = MediaFile.objects.filter(request=main_request) 

    files_list = [] 

    for media_file in files: 
     files_list.append ({ 
       'preview' : "/render/" + str(main_request.request_unique_id) + "/" + media_file.filename,   
       'name' : media_file.filename,   
       'status' : media_file.status, 
       'comment' : media_file.comment, 
       'id':media_file.id, 
       'pixel' : 
          if "jpg" not in media_file.filename: 
           Image.open(settings.MEDIA_ROOT + main_request.request_unique_id + "/"+ media_file.filename).size 
          else: 
           return '0, 0' 
      }) 
+0

如果 “JPG” 不media_file.filename: ^ 语法错误:无效的语法给它 – user16301

+1

我无法重现您的错误。但是,只是指出,即使文件名不是jpg文件,也会冒着文件名带有jpg文件的风险。检查文件名中最后4个字母是否是'.jpg'会更好吗? – Noam

+0

如何编写if else条件来查找.jpg和tif,然后执行image.open命令...否则需要返回0,0? – user16301

回答

0

参见三元操作(或条件表达式):"X if C else Y"

https://www.python.org/dev/peps/pep-0308/

for media_file in files: 
    files_list.append ({ 
      'preview' : "/render/" + str(main_request.request_unique_id) + "/" + media_file.filename,   
      'name' : media_file.filename,   
      'status' : media_file.status, 
      'comment' : media_file.comment, 
      'id':media_file.id, 
      'pixel' : Image.open(settings.MEDIA_ROOT + main_request.request_unique_id + "/"+ media_file.filename).size if "jpg" not in media_file.filename else '0, 0' 
     }) 
+0

'code'File“/views.py”,in line 374,in 'pixel':Image.open(settings.MEDIA_ROOT + main_request.request_unique_id +“/”+ media_file.filename).size if“jpg”not in文件名“else”0,0“}) 文件”/PIL/Image.py“,第2286行,打开 %(文件名,如果文件名其他fp)) OSError:无法识别映像文件'/ pathof file/testfile .pdf''仍然出现错误 – user16301

0
'pixel' : Image.open(settings.MEDIA_ROOT + main_request.request_unique_id 
+ "/"+ media_file.filename).size if ("JPG" in media_file.filename.upper()) 
or ("TIF" in media_file.filename.upper()) else '0, 0'}