-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhdf5_select.py
64 lines (49 loc) · 2.13 KB
/
hdf5_select.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import h5py
baddemo=[]
# with h5py.File("/home/rookie/桌面/diffusion_policy/data/dataset/close_laptop_lid/close_laptop_lid_merged_data.hdf5") as file:
#
# # count total steps
# demos = file['data'] # 打开 HDF5 文件并读取数据
# episode_ends = list()
# prev_end = 0
# for i in range(179):
# abort_variation = False
# demo = demos[f'demo_{i}']
# actions = demo['action']
#
# if(demo['action'].shape[0] > 450):
# baddemo.append(i)
print(baddemo)
print(len(baddemo))
import os
def clean_and_rename_files(folder_path, baddemo):
"""
删除指定文件并重新排列剩余文件。
Args:
folder_path (str): 包含文件的目标文件夹路径。
baddemo (list): 保存需要删除的文件编号的列表。
"""
# 列出文件夹中所有的 .hdf5 文件
files = [f for f in os.listdir(folder_path) if f.endswith('.hdf5')]
# 按文件编号排序
files.sort(key=lambda x: int(x.split('_')[1].split('.')[0]))
# 遍历文件,删除 baddemo 中的文件
for file in files:
file_number = int(file.split('_')[1].split('.')[0]) # 提取文件编号
if file_number in baddemo:
os.remove(os.path.join(folder_path, file)) # 删除文件
print(f"Deleted: {file}")
# 列出剩余文件并重新排序
remaining_files = [f for f in os.listdir(folder_path) if f.endswith('.hdf5')]
remaining_files.sort(key=lambda x: int(x.split('_')[1].split('.')[0]))
# 按顺序重新命名文件
for new_index, file in enumerate(remaining_files):
new_name = f"episode_{new_index}.hdf5"
old_path = os.path.join(folder_path, file)
new_path = os.path.join(folder_path, new_name)
os.rename(old_path, new_path)
print(f"Renamed: {file} -> {new_name}")
print("Operation completed. Remaining files:")
print([f for f in os.listdir(folder_path) if f.endswith('.hdf5')])
folder_path = "/home/rookie/桌面/diffusion_policy/RLBench_ACT/Datasets/wipe_desk/variation0" # 替换为你的文件夹路径
# clean_and_rename_files(folder_path, baddemo)