"Erwartet Typ" Union " [str, bytearray]' got 'int' statt" Warnung in der write-Methode

Mein script schreibt die Datei chunk für chunk mit einem pre-generierte Daten, Muster:

#  Data pattern generator    
def get_random_chunk_pattern():
            return ''.join(random.choice(ascii_uppercase + digits + ascii_lowercase) for _ in range(8))

....

# DedupChunk class CTOR:
class DedupChunk:
    def __init__(self, chunk_size, chunk_pattern, chunk_position=0, state=DedupChunkStates.PENDING):
        self._chunk_size = chunk_size  # chunk size in bytes
        self._chunk_pattern = chunk_pattern
        self._chunk_position = chunk_position
        self._state = state
        self.mapping = None

    @property
    def size(self):
        return self._chunk_size

    @property
    def pattern(self):
        return self._chunk_pattern

    @property
    def position(self):
        return self._chunk_position

    @property
    def state(self):
        return self._state

....

# Here Chunk object is being initialized (inside other class's CTOR):
chunk_size = random.randint(64, 192) * 1024  # in bytes
        while (position + chunk_size) < self.file_size:  # generating random chunks number
            self.chunks.append(DedupChunk(chunk_size, DedupChunkPattern.get_random_chunk_pattern(), position))

....

# Actual writing
    with open(self.path, 'rb+') as f:
        for chunk in self.chunks:
            f.write(chunk.pattern * (chunk.size // 8))

PyCharm zeigt "Expected type 'Union[str, bytearray]' got 'int' instead" Warnung in write-Methode

Aber beim entfernen der division in
f.write(chunk.pattern * chunk.size) oder division aussen:

chunk.size //= 8
f.write(chunk.pattern * chunk.size)

Warnung verschwunden

Was eigentlich hier passiert?

Dank

nun,zunächst chunk.size und chunk_size sind nicht das gleiche...
Oops mein Fehler. Aktualisierung
Ohne zu wissen, den Inhalt und die Art der chunk.pattern es ist schwer zu wissen, was Los ist. Können Sie schreiben chunk.pattern Datei ohne die Multiplikation?
chunk.Muster ist inialised von get_random_chunk_pattern( )
Ich vermute, dass dein chunk.das Muster ist irgendwie int zurückgeben, anstatt was Sie denken, es ist. Versuchen Sie explizite Konvertierung in eine Zeichenfolge mit str(chunk.pattern *(chunk.size // 8)) und sehen, was Sie bekommen

InformationsquelleAutor Samuel | 2015-10-27

Schreibe einen Kommentar