2016-03-20 14 views
-1

これは、コードの一部です:例外TypeError: - フォーマット文字列のための十分な引数のpython

print("User would be added sudo access") 
    comment = raw_input("Enter comment for sudo entry ") 
    group_name = raw_input("Enter sudo group name ") 

    edit_verdad = "vd edit -u '+module.sudo.alias.'%s' = '%s'' \ 
        -u '+module.sudo.ent.'%s'.cmd = ALL' \ 
        -u '+module.sudo.ent.'%s'.comment = '%s'' \ 
        -u '+module.sudo.ent.'%s'.host = ALL' \ 
        -u '+module.sudo.ent.'%s'.passwd = 0' \ 
        -u '+module.sudo.ent.'%s'.user = '%s'' \ 
        '%s'" %(group_name, options.username, group_name, comment, group_name, group_name, group_name, group_name, options.hostname) 
    print(edit_verdad) 

変数options.hostnameとoptions.usernameはオプトパースから正しい値を持っています。私は、スクリプトを実行したときに

私が手のようなもの:

[loclhost]$ ./add_sudo_access.py -u rocky -n somehostname.xxx.yyy.com 
User would be added sudo access 
Enter comment for sudo entry ticket 123 
Enter sudo group name sudoadm 
Traceback (most recent call last): 
    File "./add_sudo_access.py", line 50, in <module> 
    '%s'" %(group_name, options.username, group_name, comment, group_name, group_name, group_name, group_name, options.hostname) 

任意のアイデア?

+1

文字列に ''%s' 'が何回現れるか、そしてその文字列に何個の変数を補間しているのかをもっと慎重に調べることをお勧めします。 – TigerhawkT3

答えて

0

フォーマットには10​​個の引数がありますが、タプルで9個の値を渡しました。

この

edit_verdad = "vd edit -u '+module.sudo.alias.'%s' = '%s'' \ 
        -u '+module.sudo.ent.'%s'.cmd = ALL' \ 
        -u '+module.sudo.ent.'%s'.comment = '%s'' \ 
        -u '+module.sudo.ent.'%s'.host = ALL' \ 
        -u '+module.sudo.ent.'%s'.passwd = 0' \ 
        -u '+module.sudo.ent.'%s'.user = '%s'' \ 
        '%s'" %(group_name, options.username, group_name, comment, group_name, group_name, group_name, group_name, options.hostname, "LAST VARS") 

は今、あなたは10 %sのための10個の引数を持ってみてください。

LAST VARSをあなたの値に置き換えることができます。または文字列から1 %sを削除します。

+1

これは機能します。どうもありがとう! – supervirus

0

文字列の '%s'の数を慎重に数えると、数字が10になります。残念ながら%(..)には9個の要素しかありません。あなたは余分な%sを持っているか、%(..)のリストの1つの値を欠場しています。

+0

あなたは正しいです。どうもありがとう。 – supervirus

関連する問題