python字符串转换

时间:2012-09-03 05:59:35

标签: python fabric

尝试使用python fabric脚本添加用户。

uid = prompt("Enter username:")
eid = prompt("Enter user's email address:")
password = generate_passwd()
run('adduser -g vpn -c %s %s') % (eid, uid)
run("echo -e '%s\n' | passwd %s") % (password, uid)
print (password)

错误:

File "/tmp/hardway/fabfile.py", line 56, in addvpnuser
    run('adduser -g vpn -c %s %s') % (eid, uid)
TypeError: not all arguments converted during string formatting

知道我做错了什么。提前谢谢。

1 个答案:

答案 0 :(得分:5)

问题在于你将字符串插值放在错误的位置;它必须直接在字符串之后而不是在parens之外。 (顺便说一句,这不是面料特有的。)

所以

run('adduser -g vpn -c %s %s' % (eid, uid))

而不是

run('adduser -g vpn -c %s %s') % (eid, uid)

run("echo -e '%s\n' | passwd %s" % (password, uid))

而不是

run("echo -e '%s\n' | passwd %s") % (password, uid)