如何通过python脚本检查用户是否存在于perforce中

时间:2018-01-08 13:46:47

标签: python perforce p4python

我想制作脚本以从perforce中删除已终止的用户,但首先必须检查用户是否存在于perforce中。 我在python脚本中尝试了下面的命令但是没有用。

p4.run("users"|grep user)

perforce中是否有任何命令或以任何方式在我的脚本中使用上述命令。

3 个答案:

答案 0 :(得分:3)

这一行

p4.run("users"|grep user)

没有工作。您似乎认为p4.run()执行操作系统命令行,然后您可以输出管道。这不是p4.run()的工作方式。它是一个API函数,它接受与您在命令行上键入的命令字符串类似的命令字符串,但这是相似性结束的地方。尝试

myusers = p4.run("users")

然后使用Perforce在myusers中回复给您的内容。

答案 1 :(得分:1)

有几点。我不知道你的命令失败的原因,但猜你没有登录(即使用p4.connect()连接)。我尝试了以下内容并发现它有效:

import getpass
import P4

def get_user(user):
    """
    Get information for a single user

    Return None if not found, or a dict similar to this one:
        {
            'Update': '1422308004',
            'Access': '1515088079',
            'User': 'abc', 
            'FullName': 'Anna Bell Clark',
            'Type': 'standard',
            'Email': 'abc@example.com'
        }
    """
    p4 = P4.P4()
    p4.password = getpass.getpass()
    p4.connect()
    try:
        users_info = p4.run('users', user)
        return users_info[0]
    except P4.P4Exception:
        return None


user = 'abc'
print(get_user(user))

注释

  • 使用getpass.getpass()从控制台提示输入密码。 getpass不会回显密码,因此隐藏密码是合理安全的。

答案 2 :(得分:0)

请看这个示例P4Python代码:

https://swarm.workshop.perforce.com/files/guest/robert_cowham/perforce/API/python/main/test/test_p4python.py#747

def _delete_user(self, new_user):
    user = self.p4.fetch_user(new_user)
    self.p4.save_user(user)
    self._change_user(config.p4_user)
    self.p4.login(config.p4_password)
    print self.p4.delete_user("-f", new_user)

这演示了如何获取用户,以该用户身份登录以及删除用户。