-1

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

p4.run("users"|grep user)

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

4

3 回答 3

3

这条线

p4.run("users"|grep user)

不会工作。您似乎认为它p4.run()执行了一个操作系统命令行,然后您可以将输出传送到该命令行。这不是如何p4.run()工作的。它是一个 API 函数,它采用与您在命令行上键入的内容相似的命令字符串,但这就是相似性结束的地方。尝试

myusers = p4.run("users")

然后使用 Perforce 在myusers.

于 2018-01-08T14:01:00.140 回答
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不会回显密码,因此隐藏密码是相当安全的。
于 2018-01-08T14:28:18.377 回答
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)

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

于 2018-01-08T22:17:36.163 回答