Запись двоичного буфера в файл в Python

System.out.println добавит в строку символ перевода строки "\ n" после значения, которое вы передадите. System.out.print не добавляет символ перевода строки

Поскольку jUnit сообщает, что тест не пройден из-за того, что ожидаемая строка (та, которая в тесте) не имеет перевода строки в конце, как и настоящая строка (тот из outContent) делает.

Я не уверен, что ваш код правильный или нет, вы можете изменить использование print вместо println, но тогда следующий тест не пройдет:

@Test
public void testMoreThenOneOff() {
    CountNumP2 cn = new CountNumP2();
    cn.countUpDown(0, 2);
    String output = "0\n1\n2\n1\n0";
    assertEquals(output , outContent.toString());
}

Действительно зависит от того, кто вы пытаясь выполнить, но установка некоторых точек останова на результат outContent.toString () должна быть полезной.

6
задан Jamie Love 16 March 2009 в 23:30
поделиться

2 ответа

Разрезание работ для c_char_Arrays также:

myfile.write(c_uncompData_p[:c_uncompSize])
6
ответ дан 9 December 2019 в 20:49
поделиться

buffer() мог бы помочь избежать ненужного копирования (вызванный путем разрезания как в ответе @elo80ka):

myfile.write(buffer(c_uncompData_p.raw, 0, c_uncompSize))

В Вашем примере это не имеет значения (из-за c_uncompData_p записан только однажды, и это является маленьким), но в целом это могло быть полезно.


Только ради осуществления вот ответ, который использует C stdio fwrite():

from ctypes import *

# load C library
try: libc = cdll.msvcrt # Windows
except AttributeError:
     libc = CDLL("libc.so.6") # Linux

# fopen()
libc.fopen.restype = c_void_p
def errcheck(res, func, args):
    if not res: raise IOError
    return res
libc.fopen.errcheck = errcheck
# errcheck() could be similarly defined for `fwrite`, `fclose` 

# write data
file_p  = libc.fopen("output.bin", "wb")
sizeof_item = 1 # bytes
nitems  = libc.fwrite(c_uncompData_p, sizeof_item, c_uncompSize, file_p)
retcode = libc.fclose(file_p)
if nitems != c_uncompSize: # not all data were written
   pass
if retcode != 0: # the file was NOT successfully closed
   pass
6
ответ дан 9 December 2019 в 20:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: