【通过python操作perforce】

P4Python

通过python操作perforce

from P4 import P4, P4Exception
p4 = P4()


# 连接P4
def connect_P4(ip, port, username, passwd):
    p4.port = ip + ":" + port
    p4.user = username
    p4.password = passwd
    try:
        p4.connect()
        p4.run_login()
    except P4Exception:
        for e in p4.errors:
            print(e)


###### 用户的增删改查  ##########
# 查询用户
def select_P4_users():
    try:
        spec = p4.run("users")
        print(spec)
    except P4Exception:
        for e in p4.errors:
            print(e)
    finally:
        p4.disconnect()


# 新建用户
# 参数 user为list格式如下
# user = {
#             'User': 'newuser',
#             'Email': 'newuser@email.com',
#             'FullName': 'New User'
#         }
def add_P4_user(user):
    try:
        p4.save_user(user, "-f")
    except P4Exception:
        for e in p4.errors:
            print(e)
    finally:
        p4.disconnect()


# 删除用户user001和用户的所有客户端
# delete_P4_user("guest1")
def delete_P4_user(username):
    try:
        spec = p4.run("user", "-y", "-D", username)
        print(spec)
    except P4Exception:
        for e in p4.errors:
            print(e)
    finally:
        p4.disconnect()


# ######## 用户组的增删改查  ##########
# 查询用户组
def select_P4_group():
    try:
        spec = p4.run("groups")
        print(spec)
    except P4Exception:
        for e in p4.errors:
            print(e)
    finally:
        p4.disconnect()


# 查询用户组详情
# P4_group_info("NormalUser")
def P4_group_info(group_name):
    try:
        spec = p4.run("group", "-o", group_name)
        print(spec)
    except P4Exception:
        for e in p4.errors:
            print(e)
    finally:
        p4.disconnect()


# 新建用户组(修改则改变对应group的key对应的value)
# 参数group:
    # group = {
    #     'Group': 'newGroup',
    #     'PasswordTimeout': 'unlimited',
    #     'Timeout': '43100',
    #     'Users': 'user001'
    # }
def add_P4_group(group):
    try:
        p4.save_group(group)
    except P4Exception:
        for e in p4.errors:
            print(e)
    finally:
        p4.disconnect()


# 用户组用户的修改(增加/删除)
# change_P4_group_user("NormalUser", "guest1")
def change_P4_group_user(groupname, username):
    try:
        group = p4.fetch_group(groupname)
        group['Users'].append(username)  # 增加用户
        group["Users"].remove(username)  # 删除用户组的用户
        p4.save_group(group)
    except P4Exception:
        for e in p4.errors:
            print(e)
    finally:
        p4.disconnect()


# 删除用户组
# delete_group("NormalUser001")
def delete_group(group_name):
    try:
        spec = p4.run("group", "-d", group_name)
        print(spec)
    except P4Exception:
        for e in p4.errors:
            print(e)
    finally:
        p4.disconnect()


# ######权限增删改查##########
# 查看用户权限
def P4_protects():
    try:
        spec = p4.run("protects")
        print(spec)
    except P4Exception:
        for e in p4.errors:
            print(e)
    finally:
        p4.disconnect()


# 删除或新增用户权限
# delete_or_add_protect("read user * * //...")
def delete_or_add_protect(command):
    try:
        protect = p4.fetch_protect()
        protect['Protections'].append(command)  # 增加权限
        protect['Protections'].remove(command)  # 删除权限
        p4.save_protect(protect)
    except P4Exception:
        for e in p4.errors:            # Display errors
            print(e)
    finally:
        p4.disconnect()


# 修改权限组
# change_P4_protect("read user * * //...", "write user * * //...")
def change_P4_protect(before_protect, after_protect):
    try:
        protect = p4.fetch_protect()
        for i in protect['Protections']:
            if i == before_protect:
                protect['Protections'][protect['Protections'].index(i)] = after_protect
        p4.save_protect(protect)
    except P4Exception:
        for e in p4.errors:            # Display errors
            print(e)
    finally:
        p4.disconnect()


if __name__ == '__main__':
    connect_P4("ip", "port", "user", "passwd")
    # 调用的方法 例如:select_P4_group()
    select_P4_group()

补充

 # 修改用户名称 20211203
 newUser = p4.run("renameuser", "--from=user001", "--to=tom")
上一篇:用户文章转载:P4 Rmdir 会自动删除空目录?不,没那么简单


下一篇:【李宏毅机器学习】Basic Concept 基础概念(p4) 学习笔记