Найти - Пользователи
Полная версия: Запись байтов в файл и признак конца файла
Начало » Python для новичков » Запись байтов в файл и признак конца файла
1
BoaConstrictor
Здравствуйте.
Начал писать на Питоне и возникла парочка проблем, пытался найти решение поиском, но неудачно.
Нужно сейчас разбить файл на блоки по 64 бита(это сделал нормально) и записать эти блоки в другой файл. Предполагается что файлы будут бинарными.
1)Файл считывается бесконечно. Как определить конец файла?
2)Как записать байты из массива outarr в выходной файл?

__author__ = 'Udav'
import struct
f = open("1.txt", "rb")
out = open("2.txt", "wb")
while 1:
    data = f.read(8)
    if data == "":
        break
        
    arr = bytearray(data)
    for i in arr:
        print(bin(i))
    x = 0
 
    for i in arr:
        x <<= 8
        x += i
    #Тут будет XOR с дургим числом
    outarr = [0]*8
    for i in range(8):
        outarr[7-i] = (x >> (i*8)) & 0xff
#Для проверки совпадения данных
    print(x)
    print(bin(x))
    for i in outarr:
        print(bin(i))
    #Вот до сюда совпадает всё
    for i in outarr:
        print(outarr)
        outdata = struct.pack('b', i)
        out.write(outdata)
        print(outdata)
f.close()
out.close()
pyuser
import struct
from functools import reduce
with open("1.txt", "rb") as fin, open("2.txt", "wb") as fout:
    data = fin.read(8)
    while data:
        data = struct.unpack("8B", data)
        num = reduce(lambda x, y: (x << 8) + y, data)
        data = struct.pack("8B", *[(num >> (i * 8)) & 0xFF for i in range(8)][::-1])
        fout.write(data)
        data = fin.read(8)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB