84 lines
2.6 KiB
Python
Executable File
84 lines
2.6 KiB
Python
Executable File
import os
|
|
import pickle
|
|
import json
|
|
|
|
import numpy as np
|
|
|
|
|
|
class FileUtil:
|
|
@staticmethod
|
|
def get_path(file_name, target_dir=None):
|
|
if target_dir is None:
|
|
file_path = file_name
|
|
else:
|
|
file_path = os.path.join(target_dir, file_name)
|
|
return file_path
|
|
|
|
@staticmethod
|
|
def load_pickle(file_name, target_dir=None):
|
|
file_path = FileUtil.get_path(file_name, target_dir)
|
|
with open(file_path, "rb") as f:
|
|
return pickle.load(f)
|
|
|
|
@staticmethod
|
|
def save_pickle(data, file_name, target_dir=None):
|
|
file_path = FileUtil.get_path(file_name, target_dir)
|
|
with open(file_path, "wb") as f:
|
|
pickle.dump(data, f)
|
|
return True
|
|
|
|
@staticmethod
|
|
def load_json(file_name, target_dir=None):
|
|
file_path = FileUtil.get_path(file_name, target_dir)
|
|
with open(file_path, "r") as f:
|
|
return json.load(f)
|
|
|
|
@staticmethod
|
|
def save_json(data, file_name, target_dir=None):
|
|
file_path = FileUtil.get_path(file_name, target_dir)
|
|
with open(file_path, "w") as f:
|
|
json.dump(data, f)
|
|
return True
|
|
|
|
@staticmethod
|
|
def save_np_txt(np_data, file_name, target_dir=None):
|
|
if len(np_data.shape) > 2:
|
|
raise ValueError("Only 2D arrays are supported.")
|
|
file_path = FileUtil.get_path(file_name, target_dir)
|
|
np.savetxt(file_path, np_data)
|
|
|
|
@staticmethod
|
|
def load_np_txt(file_name, target_dir=None, shuffle=False):
|
|
file_path = FileUtil.get_path(file_name, target_dir)
|
|
np_data = np.loadtxt(file_path)
|
|
if shuffle:
|
|
indices = np.arange(np_data.shape[0])
|
|
np.random.shuffle(indices)
|
|
np_data_shuffled = np_data[indices]
|
|
return np_data_shuffled
|
|
else:
|
|
return np_data
|
|
|
|
@staticmethod
|
|
def find_object_models(path):
|
|
obj_files = {}
|
|
for root, dirs, files in os.walk(path):
|
|
for file in files:
|
|
if file.endswith(".obj"):
|
|
full_path = os.path.join(root, file)
|
|
modified_name = full_path.replace(path, "").replace(os.sep, "_").rstrip(".obj")
|
|
if modified_name.startswith("_"):
|
|
modified_name = modified_name[1:]
|
|
obj_files[modified_name] = full_path
|
|
return obj_files
|
|
|
|
|
|
''' ------------ Debug ------------ '''
|
|
if __name__ == "__main__":
|
|
arr2d = np.random.random((4, 3))
|
|
print(arr2d)
|
|
np.savetxt("test.txt", arr2d)
|
|
loaded_arr2d = FileUtil.load_np_txt("test.txt")
|
|
print()
|
|
print(loaded_arr2d)
|