p4python run describe未返回列表

时间:2018-01-19 09:43:49

标签: python perforce p4python

p4.connect()                   # Connect to the Perforce Server
info = p4.run("info")          # Run "p4 info" (returns a dict)
changes_results = p4.run('changes','-s','submitted', '//components/rel/...@2017/11/01,@2017/12/31')


changes_lists = []


for change_result in changes_results:
    change_list = change_result['change']
    changes_lists.append(change_list)



print('Total Change list found ', len(changes_lists))
for idx_main, change_id in enumerate(changes_lists):
    print('\n\n\n', change_id, idx_main)
    result = p4.run('describe', change_id)
    print(result)
    depotfiles = result[0]["depotFile"]
    filesrevision = result[0]["rev"]

对于某些更改列表,这是完全正常的p4.run返回列表,我能够提取更改列表文件及其修订号。

但有时p4.run没有返回正确的列表而是返回字符串,我无法提取更改列表文件及其修订版号并给出以下错误

depotfiles = result [0] [“depotFile”] TypeError:字符串索引必须是整数

P4或我的代码是否存在问题。

1 个答案:

答案 0 :(得分:1)

获取更改列表(或其他任何位置)中文件列表的最直接方法是p4 files命令。

即。替换:

result = p4.run('describe', change_id)
print(result)
depotfiles = result[0]["depotFile"]
filesrevision = result[0]["rev"]

使用:

for result in p4.run('files', '@='+change_id):
    print(result)
    depotfiles = result["depotFile"]
    filesrevision = result["rev"]