Hướng dẫn python struct error unpack requires a buffer of 8 bytes - giải nén lỗi cấu trúc python yêu cầu bộ đệm 8 byte

Tôi có tệp nhị phân là định dạng này (b'A\xd9\xa5\x1ab\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x0b\xda\xa5\x1ab\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\xcd\xdb\xa5\x1ab\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\xff\xdb\xa5\x1ab\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\xe9\xdc\xa5\x1ab\x00\x00\x00\x06\x00\x00\x00\x02\x00\x00\x00\xf7\xdc\xa5\x1ab\x00\x00\x00\x08\x00\x00\x00\x02\x00\x00\x00\x1b\xdd\xa5\x1a') và tôi đang lấy tệp làm đầu vào của người dùng và đọc tệp trong biến read_file (đối tượng byte class). Tôi cần chuyển đổi nó thành ASCII bằng cách sử dụng lược đồ số nguyên (int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int , int) Mỗi ​​int của 4 byte. Tôi đã thử làm điều này bằng thư viện struct để giải nén nó. Tôi đã viết các lệnh sau nhưng nó đã cho tôi lỗi sau:

lỗi

print(unpack("IIII", read_file))
struct.error: unpack requires a buffer of 16 bytes

mã số

    for (dirpath, dirnames, filenames) in walk('/Users/amathur1/PycharmProjects/learningpython/NAWF_VRG_G'):
        count = 1
        for file in filenames:
            print(count, " : ", file)
            count = count + 1
        print("select file you want to convert")
        input_file = input()
        print("Selected file number is : ", input_file)

        #To open the selected file
    with open(dirpath + "/" + filenames[int(input_file) - 1], 'rb') as file:
        # Reading the selected file i.e. file
        read_file = file.read()
    print(unpack("IIII", read_file))

Xin chào, Cảm ơn bạn rất nhiều vì đã chia sẻ công việc tuyệt vời này cho mọi người! Tôi hiện đang kiểm tra xem Multinerf có thể chạy trên Windows Machine hay không và ngay bây giờ với lệnh này:
I am currently testing if MultiNeRF is possible to run on Windows machine, and right now with this command:

python -m train --gin_configs=configs\360.gin --gin_bindings="Config.data_dir = '%DATA_DIR%'" --gin_bindings="Config.checkpoint_dir = '%DATA_DIR%\checkpoints'" --logtostderr

Tôi sẽ gặp lỗi này:

I0822 23:45:01.236814 21060 xla_bridge.py:160] Remote TPU is not linked into jax; skipping remote TPU.
I0822 23:45:01.236814 21060 xla_bridge.py:333] Unable to initialize backend 'tpu_driver': Could not initialize backend 'tpu_driver'
I0822 23:45:01.369816 21060 xla_bridge.py:333] Unable to initialize backend 'rocm': NOT_FOUND: Could not find registered platform with name: "rocm". Available platform names are: CUDA Interpreter Host
I0822 23:45:01.374814 21060 xla_bridge.py:333] Unable to initialize backend 'tpu': module 'jaxlib.xla_extension' has no attribute 'get_tpu_client'
C:\Users\user\anaconda3\envs\multinerf\lib\site-packages\jax\_src\lib\xla_bridge.py:506: UserWarning: jax.host_id has been renamed to jax.process_index. This alias will eventually be removed; please update your code.
  warnings.warn(
Traceback (most recent call last):
  File "C:\Users\user\anaconda3\envs\multinerf\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Users\user\anaconda3\envs\multinerf\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "F:\MultiNeRF\multinerf\train.py", line 288, in 
    app.run(main)
  File "C:\Users\user\anaconda3\envs\multinerf\lib\site-packages\absl\app.py", line 308, in run
    _run_main(main, args)
  File "C:\Users\user\anaconda3\envs\multinerf\lib\site-packages\absl\app.py", line 254, in _run_main
    sys.exit(main(argv))
  File "F:\MultiNeRF\multinerf\train.py", line 55, in main
    dataset = datasets.load_dataset('train', config.data_dir, config)
  File "F:\MultiNeRF\multinerf\internal\datasets.py", line 52, in load_dataset
    return dataset_dict[config.dataset_loader](split, train_dir, config)
  File "F:\MultiNeRF\multinerf\internal\datasets.py", line 295, in __init__
    self._load_renderings(config)
  File "F:\MultiNeRF\multinerf\internal\datasets.py", line 584, in _load_renderings
    pose_data = NeRFSceneManager(colmap_dir).process()
  File "F:\MultiNeRF\multinerf\internal\datasets.py", line 77, in process
    self.load_cameras()
  File "F:\MultiNeRF\multinerf\internal/pycolmap/pycolmap\scene_manager.py", line 90, in load_cameras
    self._load_cameras_bin(input_file)
  File "F:\MultiNeRF\multinerf\internal/pycolmap/pycolmap\scene_manager.py", line 102, in _load_cameras_bin
    num_cameras = struct.unpack('L', f.read(8))[0]
struct.error: unpack requires a buffer of 4 bytes

Vui lòng cho tôi biết nếu bạn biết bất kỳ giải pháp cho lỗi này! Bất kỳ trợ giúp sẽ được đánh giá cao.

Hiện tại JAX của tôi là 0,13,4 và Jaxlib là 0,13,4 quá chạy trên Cuda11.1 với Python 3.9
Running on CUDA11.1 with python 3.9

Ở đây bạn đi: # Đây là định dạng của cấu trúc của tôi: format = '5S100S36S' format_size = struct.calcsize (định dạng)def build_msg (nhiệm vụ, dữ liệu, session_id = ''): return struct.pack (định dạng, byte (nhiệm vụ, 'utf-8'), byte (dữ liệu, 'utf-8'), byte (session_id, 'UTF-8không ')Decode ('UTF-8')) trả về tuple (Parsed_data) # Vận chuyển các tin nhắn từ máy khách đến máy chủ và ngược lại: def send_msg (Conn, nhiệm vụ, dữ liệu, session_id = '').