джулия: как читать сжатый текстовый файл 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.