2017-01-10 67 views
2

我得到下面的代碼continuation line under-indented for visual indent錯誤:我得到「延續線下縮進視覺縮進」錯誤

command = 'ffmpeg -i downloaded.mp4 -codec:v libx264 -codec:a \ 
      aac -map 0 -f ssegment -segment_format mpegts \ 
      -segment_list %s/%skbps.m3u8 -segment_time 10 \ 
      %s/%skbps_%%03d.ts' % (path, options['video_bitrate'], 
       path, options['video_bitrate']) 

如何把這個代碼進行格式化,以消除誤差?

回答

6

這種情況在PEP-8中涵蓋。總之,要解決此問題,需要確保在縮進括號內的行時將下一行與左括號之後的字符對齊。例如,當你繼續使用括號代碼時,你應該這樣做。

foo(a, b, c, 
    d, e) 

你現在正在這樣做。

foo(a, b, c, 
    d, e) 

要修復你的縮進,你應該這樣做。

command = 'ffmpeg -i downloaded.mp4 -codec:v libx264 -codec:a \ 
      aac -map 0 -f ssegment -segment_format mpegts \ 
      -segment_list %s/%skbps.m3u8 -segment_time 10 \ 
      %s/%skbps_%%03d.ts' % (path, options['video_bitrate'], 
            path, options['video_bitrate']) 

從斯蒂芬·勞赫的答案,你可能已經注意到,有更多的這一點爲好。而不是使用斜線做續行,你可能會在括號中圍繞整行,然後將行分割成字符串,python會自動加入相鄰的字符串文字。例如,如果你有一個字符串,你以前做過。

greeting = 'Hello, \ 
      World!' 

你應該這樣做。

greet = ('Hello, ' 
     'World!') 

這種方式更可讀,更適合您的工作。另外請注意,還有另一種PEP-8批准的方式來繼續括號。而不是做。

foo(a, b, c, 
    d, e) 

您也可以這樣做。

foo(
    a, b, c, 
    d, e) 

要做到這一點,你必須在開括號後離開第一線空白,則必須在從當前塊縮進,開始您的延續。我希望這個編輯更加深入你的理解。如果你想了解更多關於Python風格的知識,那麼就給PEP指南快速閱讀一下(它們是python代碼的標準)。

2

當進行字符串的連續操作時,通常使用隱式(或顯式)字符串連接。這可以更好地控制創建的字符串。此外,如果該字符串括號,不需要延續字符:

command = ('ffmpeg -i downloaded.mp4 -codec:v libx264 -codec:a ' 
      'aac -map 0 -f ssegment -segment_format mpegts ' 
      '-segment_list %s/%skbps.m3u8 -segment_time 10 ' 
      '%s/%skbps_%%03d.ts' % (
       path, options['video_bitrate'], 
       path, options['video_bitrate'])) 

側面說明:pycharm有活高亮PEP8違反一個非常不錯的功能就在編輯器中。