python字符串转换

jah*_*hil 0 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)
Run Code Online (Sandbox Code Playgroud)

错误:

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
Run Code Online (Sandbox Code Playgroud)

知道我做错了什么.提前致谢.

I82*_*uch 5

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

所以

run('adduser -g vpn -c %s %s' % (eid, uid))
Run Code Online (Sandbox Code Playgroud)

代替

run('adduser -g vpn -c %s %s') % (eid, uid)
Run Code Online (Sandbox Code Playgroud)

run("echo -e '%s\n' | passwd %s" % (password, uid))
Run Code Online (Sandbox Code Playgroud)

代替

run("echo -e '%s\n' | passwd %s") % (password, uid)
Run Code Online (Sandbox Code Playgroud)