使用p4添加用户并设置密码的时候报错了,这个问题显然是字符编码的问题,如果需要传入中文的name或者fullname,需要显式设置p4的编码为utf8就可以解决了。
from P4 import P4, P4Exception
import sys
p4 = P4()
def add_user(user_name,password,email,fullname):
try:
user={
'User': user_name,
'Email': email,
'FullName': fullname,
}
ret=p4.save_user(user,"-f") #等效代码:p4.run('user', '-i','-f', input=user)
print(ret)
p4.input = [password,password]#newpasswd re-enter-newpasswd
ret = p4.run_passwd(user_name)
print(ret)
except P4Exception as e:
print("exception: "+str(e))
exit(1)
finally:
if p4.connected():
p4.disconnect()
def main():
try:
p4.exception_level = 1
p4.charset="utf8"#要设置为utf8,否则传入中文就报错dm-UpdateUserSpecF
p4.user = sys.argv[1]
p4.port = sys.argv[2]
p4.password = sys.argv[3]#password和ticket等效
print(sys.argv[1],sys.argv[2],sys.argv[3])
print(sys.argv[4],sys.argv[5],sys.argv[6],sys.argv[7])
ret=p4.connect()
print(ret)
user_name=sys.argv[4]
password=sys.argv[5]
email=sys.argv[6]
fullname=sys.argv[7]
add_user(user_name,password,email, fullname)
except P4Exception as e:
print("exception: "+str(e))
exit(1)
if __name__ == "__main__":
main()
exit(0)
关键语句就是这条:
p4.charset="utf8"#要设置为utf8,否则传入中文就报错dm-UpdateUserSpecF