read_folder.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import os
  2. import re
  3. from .common import read_json_file
  4. def get_frame_number(filename):
  5. """从文件名中提取帧号数字"""
  6. match = re.search(r'frame_(\d+)', filename)
  7. if match:
  8. return int(match.group(1))
  9. return 0
  10. def read_jsons_in_order(directory):
  11. """按照frame序号顺序读取目录下的文件"""
  12. # 获取目录下所有文件
  13. files = os.listdir(directory)
  14. # 按照frame号码排序
  15. sorted_files = sorted(files, key=get_frame_number)
  16. results = []
  17. for file in sorted_files:
  18. file_path = os.path.join(directory, file)
  19. if os.path.isfile(file_path):
  20. try:
  21. data = read_json_file(file_path)
  22. results.append((file_path, data))
  23. except Exception as e:
  24. print(f"读取文件 {file} 时出错: {e}")
  25. return results
  26. def read_images_in_order(directory):
  27. """按照frame序号顺序读取目录下的文件"""
  28. # 获取目录下所有文件
  29. files = os.listdir(directory)
  30. # 按照frame号码排序
  31. sorted_files = sorted(files, key=get_frame_number)
  32. results = []
  33. for file in sorted_files:
  34. file_path = os.path.join(directory, file)
  35. if os.path.isfile(file_path):
  36. try:
  37. results.append(file_path)
  38. except Exception as e:
  39. print(f"读取文件 {file} 时出错: {e}")
  40. return results
  41. if __name__ == "__main__":
  42. file_path = "/data/data/luosy/project/oral/data/img_caption/"
  43. sorted_files = read_files_in_order(file_path)
  44. # 打印排序后的文件内容
  45. for filename, content in sorted_files:
  46. print(f"处理文件: {filename}")
  47. print(f"内容: {type(content)}")
  48. print("-" * 50)