我想制作脚本以从perforce中删除已终止的用户,但首先必须检查用户是否存在于perforce中。 我在python脚本中尝试了下面的命令但是没有用。
p4.run("users"|grep user)
perforce中是否有任何命令或以任何方式在我的脚本中使用上述命令。
答案 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代码:
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)
这演示了如何获取用户,以该用户身份登录以及删除用户。