我想制作脚本以从 perforce 中删除终止的用户,但首先必须检查用户是否存在于 perforce 中。我在 python 脚本中尝试了以下命令,但没有奏效。
p4.run("users"|grep user)
perforce 中是否有任何命令或以任何方式在我的脚本中使用上述命令。
这条线
p4.run("users"|grep user)
不会工作。您似乎认为它p4.run()
执行了一个操作系统命令行,然后您可以将输出传送到该命令行。这不是如何p4.run()
工作的。它是一个 API 函数,它采用与您在命令行上键入的内容相似的命令字符串,但这就是相似性结束的地方。尝试
myusers = p4.run("users")
然后使用 Perforce 在myusers
.
几点。我不知道您的命令为何失败,但猜测您尚未登录(即使用 连接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
不会回显密码,因此隐藏密码是相当安全的。查看此示例 P4Python 代码:
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)
这演示了获取用户、以该用户身份登录以及删除该用户。