Python 3 open () в двоичном режиме не пишет правильный контент - PullRequest
0 голосов
/ 22 января 2020

Так что в принципе у меня проблема с записью в байты с использованием python3. Я гарантировал, что содержимое соответствует ожидаемому, используя печать, но он все еще пишет неправильный контент. В основном пишет первую строку, скопированную 4 раза. Я использую Latin-1. По сути, единственные необработанные байты, которые я включаю в b-строки, это 0x80 и 0x81 (т.е. \x80 и \x81). Я пишу это, используя функцию здания open () в режиме "wb". Кто-нибудь знает, что происходит?

Редактировать: Вот основной метод, используемый для создания файла. Как уже говорилось, fs - это файл, открытый в режиме wb, и он печатается, как и ожидалось.

    def assemble_file(self, fs):
        "must call lex_from_asm_text before assembling"
        self.bin_raw_content += b"ROSAPYVM\x81"
        for x in self._asm_stripped:
            try:
                bcode = bytes([ops.__dict__[x[0]]])
                print(bcode)
                print([x[1:]])
                self.bin_raw_content += b"\x00"
                self.bin_raw_content += bcode
                for i in x[1:]:
                    self.bin_raw_content += b"\x80"
                    print(i.encode("latin-1"))
                    self.bin_raw_content += i.encode("latin-1")
            except IndexError:
                pass
            print(self.bin_raw_content)

            fs.write(self.bin_raw_content)
...