джулия: как читать сжатый текстовый файл bz2

В R я могу прочитать весь сжатый текстовый файл в вектор символов как

readLines("file.txt.bz2")

readLinesпрозрачно распаковывает файлы.gz и.bz2, но также работает с несжатыми файлами. Есть ли что-то аналогичное в julia? я могу сделать

text = open(f -> read(f, String), "file.txt")

но это не может открыть сжатые файлы. Каков предпочтительный способ чтения файлов bzip2? Есть ли какой-либо подход (помимо ручной проверки расширения имени файла), который может автоматически определять формат сжатия?

1 ответ

Решение

Я не знаю ни о чем автоматическом, но вот как вы можете (создать и) прочитать сжатый файл bz2:

using CodecBzip2 # after ] add CodecBzip2

# Creating a dummy bz2 file
mystring = "Hello Stackru!"
mystring_compressed = transcode(Bzip2Compressor, mystring)
write("testfile.bz2", mystring_compressed)

# Reading and uncompressing it
compressed = read("testfile.bz2")
plain = transcode(Bzip2Decompressor, compressed)
String(plain) # "Hello Stackru!"

Также доступны варианты потоковой передачи. Подробнее см. CodecBzip2.jl.

Другие вопросы по тегам