2017-12-15 10 views
0

Pythonで文字列を呼び出します。これは素晴らしい実行されているマルチライン機能は、私のpython 2.7での関数呼び出しを持って

execute_cmd('/sbin/ip addr flush dev ' 
      + args.interface 
      + ' && ' 
      + '/sbin/ifdown ' 
      + args.interface 
      + ' ; ' 
      + '/sbin/ifup ' 
      + args.interface 
      + ' && ' 
      + '/sbin/ifconfig | grep ' 
      + args.interface) 

が、pylint次の警告メッセージと不平を言っている:

C:220, 0: Wrong continued indentation (remove 1 space). 
        + args.interface 
        |^ (bad-continuation) 
C:221, 0: Wrong continued indentation (remove 1 space). 
        + ' && ' 
        |^ (bad-continuation) 
C:222, 0: Wrong continued indentation (remove 1 space). 
        + '/sbin/ifconfig | grep ' 
        |^ (bad-continuation) 
. 
. 
. 

複数の行にまたがる文字列引数を使用してPythonで関数を呼び出す正しい方法は何ですか?ラインを使用して、

command_line = '/sbin/ip addr flush dev {0} && /sbin/ifdown {0} ; /sbin/ifup {0} && {0} /sbin/ifconfig | grep {0}'\ 
    .format(args.interface) 
+1

'pylint'を無視してください。 – timgeb

+0

しかし、私はコードが正しいpep8スタイルであるようにしたい – Vijay47

+0

一度あなたが[PEP8で最も重要なルール]を適用すると(https://www.python.org/dev/peps/pep-0008/#a-foolish-一貫性は、ちょっとしたことではありません)。 – timgeb

答えて

0

Pylintは、やる1つのスペースを削除するには、まさにあなたに伝えますあなたも長い引数リストを開始することができます

execute_cmd('/sbin/ip addr flush dev ' \ 
     + args.interface \ 
     + ' && ' \ 
     + '/sbin/ifdown ' \ 
     + args.interface \ 
     + ' ; '\ 
     + '/sbin/ifup '\ 
     + args.interface\ 
     + ' && '\ 
     + '/sbin/ifconfig | grep '\ 
     + args.interface) 
+0

私は原子IDEを使用しています。 1つの空き領域を削除しようとすると、その領域が削除されます。 – Vijay47

+0

「原子IDEのインデントPythonを正しく作成するにはどうすればよいですか?あなたは新しい質問をするべきです。 – Mel

+0

2番目のコードは、pep8ルールを破る80文字を超えることがあります。 – Vijay47

-1

次の操作を行うことができます、あなたが例えば文字列フォーマットを、使用することができます。また

execute_cmd('/sbin/ip addr flush dev ' 
      + args.interface 
      + ' && ' 
      + '/sbin/ifdown ' 
      + args.interface 
      + ' ; ' 
      + '/sbin/ifup ' 
      + args.interface 
      + ' && ' 
      + '/sbin/ifconfig | grep ' 
      + args.interface) 

+0

できますが、できません。バックスラッシュ継続は、それに続く空白が意識してそれを無効にすることができるため、非推奨です。 – Arne

+0

確かに、それは問題を解決します。 – symm3try

+0

..非常に悪いものを導入することによって。 – Arne

0

PEP 8 states(か何かのウィット:休憩私は私のコメントで述べたようbinary operators should be put at the end of a line breakは、新しいものの開始時に、

execute_cmd(
    '/sbin/ip addr flush dev ' + 
    args.interface + 
    ' && ' + 
    '/sbin/ifdown ' + 
    args.interface + 
    ' ; ' + 
    '/sbin/ifup ' + 
    args.interface + 
    ' && ' + 
    '/sbin/ifconfig | grep ' + 
    args.interface 
) 

ない:1つのインデントレベルを持つ次の行で、本当にカッコを、)ホアヒン。私が考えるのpythonから.format機能(..以降2.6と同じ

execute_cmd(
    f'/sbin/ip addr flush dev {args.interface} && /sbin/ifdown' 
    f' {args.interface} ; /sbin/ifup {args.interface} && ' 
    f'/sbin/ifconfig | grep {args.interface}' 
) 

:何も行うことができますがfstring(パイソン> 3.6)を使用し、ちょうど+ Sを落としている


?):

execute_cmd(
    '/sbin/ip addr flush dev {0} && /sbin/ifdown' + 
    ' {0} ; /sbin/ifup {0} && ' + 
    '/sbin/ifconfig | grep {0}'.format(args.interface) 
) 
+0

私はPython 2.7を使用しています。 f '..'の書式設定の解決策は動作するはずですが、3.xx + – Vijay47

+0

の 'fstring'はPython 2.7で動作しませんが、' string.format() 'を使うとほとんど同じ異なる構文。 – Arne

関連する問題