2016-05-19 14 views
1

は、だから私は、「予期しないインデント」のエラーが表示されます。..予期しないインデントのPythonのエラー

私はしばらくの間、今それを修正しようとしてきたが、まだ動作していないようです。..

コード:

@commands.command(pass_context=True) 
async def magik(self, ctx, url, url2=None): 
"""Apply magik to Image(s)\n .magik image_url or .magik image_url image_url_2""" 
try: 
    print(url) 
    extensions = ['.png', '.jpg', '.jpeg', '.JPG', '.PNG', '.JPEG'] 
    if any(x in url for x in extensions) and url2 is None: 
     await self.bot.say("ok, applying magik") 
     with aiohttp.ClientSession() as session: 
      location = '/root/discord/files/magik.jpg' 
      async with session.get(url) as resp: 
       data = await resp.read() 
       with open(location, "wb") as f: 
        f.write(data) 
    elif url2 is not None and any(x in url2 for x in extensions): 
     await self.bot.say("ok, applying magik") 
     with aiohttp.ClientSession() as session: 
      location = '/root/discord/files/magik.jpg' 
      location2 = '/root/discord/files/magik2.jpg' 
      async with session.get(url) as resp: 
       data = await resp.read() 
       with open(location, "wb") as f: 
        f.write(data) 
      async with session.get(url2) as resp: 
       data = await resp.read() 
       with open(location2, "wb") as f: 
        f.write(data) 
    else: 
     await self.bot.say("Not an image!") 
     return 
    exif = {} 
    image = wand.image.Image(filename='/root/discord/files/magik.jpg') 
    exif.update((k[5:], v) for k, v in image.metadata.items() 
     if k.startswith('exif:')) 
    if url2 is not None: 
     exif2 = {} 
     image2 = wand.image.Image(filename='/root/discord/files/magik2.jpg') 
     exif2.update((k[5:], v) for k, v in image2.metadata.items() 
      if k.startswith('exif:')) 
    img = wand.image.Image(filename='/root/discord/files/magik.jpg') 
    print(img.size) 
    i = img.clone() 
    r = random.randint(1,4) 
    if url2 is not None: 
     with wand.image.Image(filename='/root/discord/files/magik2.jpg') as B: 
      B.clone() 
      B.liquid_rescale(width=int(B.width*0.5), height=int(B.height*0.5), delta_x=1, rigidity=0) 
      B.liquid_rescale(width=int(B.width*1.5), height=int(B.height*1.5), delta_x=2, rigidity=0) 

      with wand.image.Image(filename='/root/discord/files/magik.jpg') as A: 
       A.clone() 
       A.transform(resize='800x800>') 
       A.liquid_rescale(width=int(A.width*0.5), height=int(A.height*0.5), delta_x=1, rigidity=0) 
       A.liquid_rescale(width=int(A.width*1.5), height=int(A.height*1.5), delta_x=2, rigidity=0) 
       A.resize(A.width, A.height) 
       A.composite_channel('default_channels', A, 'over', 0, 0) 
       A.composite_channel('default_channels', B, 'over', 0, 0) 
       A.save(filename='/root/discord/files/magik_.png')     
    else: 
     params = random.uniform(0.5, 2) 
     i.transform(resize='800x800>') 
     i.liquid_rescale(width=int(i.width*0.5), height=int(i.height*0.5), delta_x=1, rigidity=0) 
     i.liquid_rescale(width=int(i.width*1.5), height=int(i.height*1.5), delta_x=2, rigidity=0) 
     i.resize(i.width, i.height) 
     # i.rotate(90 * r) 
     # i.negate() 
     i.save(filename='/root/discord/files/magik_.png') 
    print(exif) 
    if len(str(exif)) <= 2000 and url2 is None: 
     await self.bot.say("Exif Data: ```{0}```".format(str(exif))) 
    elif url2 is not None and len(str(exif)) <= 2000 and len(str(exif2)) <= 2000: 
     await self.bot.say("Exif Data Image 1: ```{0}```".format(str(exif))) 
     await self.bot.say("Exif Data Image 2: ```{0}```".format(str(exif2))) 
    else: 
     await self.bot.say("Exif Data too long, truncated") 
    await self.bot.send_file(ctx.message.channel, '/root/discord/files/magik_.png') 
except Exception as e: 
    await self.bot.say(code.format(type(e).__name__ + ': ' + str(e))) 

ヘルプは、私はこのエラーを修正するように見えることはできませんとして認識されます。

+0

SO文を挿入したときにインデントが再び壊れたかのようです。先頭の4つのスペースを正しく取得してください。それ以外の場合は手助けするのが難しいです。 – jotrocken

+0

コードのすべての行を一貫してインデント解除して再びインデントしてみましたか? テキストエディタから別のエディタにコードをコピーして貼り付けると、ほとんどの場合私の仕事に役立つことがありました。 – Jacquot

+0

私がよく遭遇するエラーは、さまざまなエディターを使用しているために、字下げに「4つのスペース」が混在していることです。あなたのエディタはそれを修正するオプションを持っているかもしれませんし、真の表を選択して4つのスペースにすべて置き換えることもできます。 – Vince

答えて

0

タブとスペースが混在していると問題が起きる可能性があります。使用しているエディタに応じて、エディタの設定に行き、 "タブをスペースとして"設定する必要があります。

関連する問題