python
  • indentation
  • 2011-12-26 102 views 26 likes 
    26

    這是我的代碼...我得到縮進錯誤,但我不知道它爲什麼會發生。Python IndentationError:意外縮進

    - >

    # loop 
    while d <= end_date: 
        # print d.strftime("%Y%m%d") 
        fecha = d.strftime("%Y%m%d") 
        # set url 
        url = 'http://www.wpemergencia.omie.es//datosPub/marginalpdbc/marginalpdbc_' + fecha + '.1' 
        # Descargamos fichero 
        response = urllib2.urlopen(url) 
        # Abrimos fichero 
        output = open(fname,'wb') 
        # Escribimos fichero 
        output.write(response.read()) 
        # Cerramos y guardamos fichero 
        output.close() 
        # fecha++ 
        d += delta 
    
    +5

    標籤和空格的混合? – taskinoor 2011-12-26 10:05:49

    +0

    這裏沒有'IndentationError'。它必須在代碼中的其他地方,以及'd'和'end_date'的定義。請提供[SSCCE](http://sscce.org/)。 – Johnsyweb 2011-12-26 10:09:42

    +2

    任何半角型編輯器都有一個選項可以以某種方式直觀地顯示空格和標籤。使用它。 – sbk 2011-12-26 10:09:58

    回答

    43

    運行與

    python -t script.py 
    

    ,如果你有混合製表符和空格這會提醒你你的程序。

    在* nix系統中,你能看到的標籤是通過運行

    cat -A script.py 
    

    ,您可以選項卡將自動轉換爲4位與命令

    expand -t 4 script.py > fixed_script.py 
    

    PS。編程時一定要使用編程編輯器(例如emacs,vim),而不是文字處理器。編程編輯器不會遇到這個問題。

    PPS。對於emacs用戶,M-xwhitespace-mode將在emacs緩衝區中顯示與cat -A相同的信息!

    +0

    不是unutbu在他/她的回答中是不完整的,我有同樣的問題,並且在使用cat -A script.py時,您可以立即看到缺少的縮進。即使您複製並粘貼,它可能看起來像編輯器中的縮進。事實上並非如此,所以要小心。 – 2014-02-08 15:43:39

    7

    檢查,如果你混合製表符和空格,那就是縮進錯誤的常見來源。

    3

    您不能混合標籤和空格進行標識。最佳做法是將所有制表符轉換爲空格。

    如何解決這個問題?那麼只需在每行之前刪除所有空格/製表符,並將它們均勻地轉換爲製表符或空格,但不要混合。最佳解決方案:在您的編輯器中啓用自動將任何標籤轉換爲空格的選項。

    另外請注意,您的實際問題可能在於此塊之前的行中,並且python會在此處拋出錯誤,因爲前導無效縮進與下列標識不匹配!

    7

    查找所有標籤,並用記事本++中的4個空格替換。

    +0

    自從原始問題發佈一年半以後,您實際上找不到任何新建議。歡迎來到SO,請在發佈自己的帖子前閱讀以前的答案。不要重複已有的答案。 – Wh1T3h4Ck5 2013-05-15 21:51:19

    0

    只需複製你的腳本和「「你的整個代碼‘’」下的」把...

    指定一個變量..喜歡這一行,

    a = """ your entire code """ 
    print a.replace(' ',' ') # first 4 spaces tab second four space from space bar 
    
    print a.replace('here please press tab button it will insert some space"," here simply press space bar four times") 
    # here we replacing tab space by four char space as per pep 8 style guide.. 
    

    現在執行這個代碼,在使用ctrl + b崇高,現在它將在控制檯中打印縮進的代碼。就是這樣

    相關問題