python字符串转换

python字符串转换,python,fabric,Python,Fabric,正在尝试使用python结构脚本添加用户 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 "

正在尝试使用python结构脚本添加用户

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

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

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

所以

而不是

run('adduser -g vpn -c %s %s') % (eid, uid)
run("echo -e '%s\n' | passwd %s") % (password, uid)

而不是

run('adduser -g vpn -c %s %s') % (eid, uid)
run("echo -e '%s\n' | passwd %s") % (password, uid)

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

所以

而不是

run('adduser -g vpn -c %s %s') % (eid, uid)
run("echo -e '%s\n' | passwd %s") % (password, uid)

而不是

run('adduser -g vpn -c %s %s') % (eid, uid)
run("echo -e '%s\n' | passwd %s") % (password, uid)

另一条也一样(“回声”线)。另一条也一样(“回声”线)。