Python Вывод текста в шестнадцатеричном формате - PullRequest
0 голосов
/ 25 апреля 2018

Я работаю с очень большим текстовым файлом (58 ГБ), который пытаюсь разбить на более мелкие куски. Проблема, с которой я сталкиваюсь, состоит в том, что более мелкие куски кажутся шестнадцатеричными. У меня есть терминал, печатающий каждую строку в stdout, но когда я вижу, что он напечатан в stdout, он выглядит для меня как обычные строки. Это известное поведение? Я никогда не сталкивался с проблемой, когда Python продолжает выплевывать вещи в Hex. Еще более странно, когда я пытался использовать разделение Ubuntu из командной строки, оно также генерировало все в Hex.

Фрагмент кода ниже:

working_dir = '/SECRET/'

output_dir  = path.join(working_dir, 'output')

test_file = 'SECRET.txt'

report_file = 'SECRET_REPORT.txt'

output_chunks = 100000000

output_base   = 'SECRET'

input         = open(test_file, 'r')
report_output = open(report_file, 'w')

count   = 0
at_line = 0
output_f = None

for line in input:
    if count % output_chunks == 0:
        if output_f:
            report_output.write('[{}] wrote {} lines to {}. Total count is {}'.format(
                datetime.now(), output_chunks, str(output_base + str(at_line) + '.txt'), count))
            output_f.close()

        output_f = open('{}{}.txt'.format(output_base, str(at_line)), 'wb')
        at_line += 1
    output_f.write(line.encode('ascii', 'ignore'))
    print line.encode('ascii', 'ignore')
    count += 1

1 Ответ

0 голосов
/ 25 апреля 2018

Вот что происходит:

Каждая строка начиналась с символа NUL. Когда я открывал части файла с помощью head или терминала PyCharm, он показывался нормально, но когда я смотрел на свой вывод в Sublime Text, он собирал этот NUL-символ и отображал результаты в Hex. Мне пришлось убрать '\ x00' из каждой строки вывода, и он начал выглядеть так, как я ожидал, до

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...