def traintest(dirpath, pklname, newpklname):
os.chdir(dirpath)
train = load('train.json')
test = load('test.json')
annotations = load(pklname)
split = dict()
split['xsub_train'] = [x['vid_name'] for x in train]
split['xsub_val'] = [x['vid_name'] for x in test]
dump(dict(split=split, annotations=annotations), newpklname)
if __name__ == '__main__':
dirpath = './data/Weizmann'
pklname = 'train.pkl'
newpklname = 'Wei_xsub_stgn++.pkl'
# writeJson('./data/Weizmann/test', 'test.json')
traintest(dirpath, pklname, newpklname)
# writeList('./data/Weizmann.list', 'Weizmann.list')
def traintest(dirpath, pklname, newpklname):
os.chdir(dirpath) # 切换当前工作目录到 dirpath
train = load('train.json') # 加载 train.json 文件
test = load('test.json') # 加载 test.json 文件
annotations = load(pklname) # 加载 pklname 对应的文件
split = dict() # 创建一个空的字典 split
split['xsub_train'] = [x['vid_name'] for x in train] # 将 train 中每个元素的 'vid_name' 字段作为 'xsub_train' 的值
split['xsub_val'] = [x['vid_name'] for x in test] # 将 test 中每个元素的 'vid_name' 字段作为 'xsub_val' 的值
dump(dict(split=split, annotations=annotations), newpklname) # 将 split 和 annotations 保存为新的 pkl 文件,文件名为 newpklname
以上代码定义了一个名为 traintest
的函数,该函数接受三个参数:dirpath
表示目录路径,pklname
表示要加载的文件名,newpklname
表示要保存的新文件名。
函数中首先通过 os.chdir(dirpath)
把当前工作目录切换到 dirpath
所指定的目录。
然后,使用 load
函数加载 train.json
和 test.json
文件,并将结果分别赋值给 train
和 test
变量。
接下来,使用 load(pklname)
加载 pklname
对应的文件,并将结果保存在 annotations
变量中。
然后,创建一个空字典 split
。
接着,将 train
中每个元素的 'vid_name'
字段的值作为键 'xsub_train'
的值,将 test
中每个元素的 'vid_name'
字段的值作为键 'xsub_val'
的值,分别存入 split
字典中。
最后,使用 dump
函数将 split
和 annotations
以字典的形式保存为新的 pkl
文件,文件名为 newpklname
。
参考: