Найти - Пользователи
Полная версия: преобразование в бинарный вид файла с данными
Начало » Python для новичков » преобразование в бинарный вид файла с данными
1 2 3
sergeek
Я же выложил рабочий код. Вам надо использовать либо np.loadtxt + h5py/pytables либо все через pandas (с pytables внутри) делать. Читайте документацию. Если задаете вопрос - выкладывайте файл с исходными данными
r1pley
sergeek
Я же выложил рабочий код. Вам надо использовать либо np.loadtxt + h5py/pytables либо все через pandas (с pytables внутри) делать. Читайте документацию. Если задаете вопрос - выкладывайте файл с исходными данными

Спасибо.. А вот скажите пожалуйста, когда ваш код пытаюсь запустить получаю ошибку: AttributeError: ‘module’ object has no attribute ‘get_store’…что не так делаю даже понятия не имею…
sergeek
r1pley
AttributeError: ‘module’ object has no attribute ‘get_store’
pandas плохо собрался. Кажется у меня было что-то похожее, не помню в чем там дело
py.user.next
doza_and
Не вижу разницы в вашем и моем утверждениях.
doza_and
Правильное утверждение - последовательно в том порядке в котором файлы оказались в командной строке команды cat.
bash их сортирует
man bash
   Pathname Expansion
After word splitting, unless the -f option has been set, bash scans each word
for the characters *, ?, and [. If one of these characters appears, then the
word is regarded as a pattern, and replaced with an alphabetically sorted list
of file names matching the pattern.
но в POSIX, в описании sh насчёт этого ничего нет
так что, отсортирует их любая оболочка или нет при разворачивании астерикса, - не определено

doza_and
я его под 2.7 перетащил
ну, привёл бы код, ошибка-то в нём детская :)

doza_and
Очевидно cat должен читать данные в двоичном режиме.
во-во, с какого это перепугу cat должна текстовые данные читать в двоичном режиме ?

doza_and
Нехорошо советовать новичкам затаскивать все в память. Особенно для cat.
это тебе приглючило - ты подумал, что я ему советую на экран выводить
последние две строки - это пример использования, в котором можно посмотреть, как это работает

doza_and
А вообще хороший cat наверное будет сложнее - двоичное чтение
в третьем питоне файл, открытый в двоичном режиме, является итератором по строкам
можно сделать и побайтовый вывод, только зачем ?
doza_and
sergeek
pandas плохо собрался
Да был у панды глюк. Помогает установка всех зависимостей. Пока ставил обматерился весь. У вас есть Dataset вы можете их сами при помощи hdf5 сохранить.

py.user.next
текстовые данные читать в двоичном режиме
Да как как он узнает какие там данные? Не берите в голову, я ничего особо не имел ввиду, просто версия cat от Бизли убогая. А обсуждение cat не имеет отношения к теме.

r1pley складывается впечатление что вы хотите решить задачу случайной перестановкой слов.
вот я взял файл
asdasdas
000000 1.25000000E-04 5.21462443E-01 1.87714331E-02 1.32428970E+00 -2.32415251E-01 -5.23119019E-01 2.80631315E-01
000000 1.25000000E-04 5.21462443E-01 1.87714331E-02 1.32428970E+00 -2.32415251E-01 -5.23119019E-01 2.80631315E-01
000000 1.25000000E-04 5.21462443E-01 1.87714331E-02 1.32428970E+00 -2.32415251E-01 -5.23119019E-01 2.80631315E-01
000000 1.25000000E-04 5.21462443E-01 1.87714331E-02 1.32428970E+00 -2.32415251E-01 -5.23119019E-01 2.80631315E-01
000000 1.25000000E-04 5.21462443E-01 1.87714331E-02 1.32428970E+00 -2.32415251E-01 -5.23119019E-01 2.80631315E-01
написал 2 строчки
import numpy, h5py
h5py.File("out.h5","w")["data"]=numpy.loadtxt("a.dat", skiprows=1)
И у меня получился валидный hdf5.

p.s.
r1pley
в общем мозг кипит
пожалуйста берегите мозг.
py.user.next
doza_and
Да как как он узнает какие там данные?
то, что он дал в начале, - текстовые данные
расширение файла не определяет текстовость или бинарность данных
были бы они бинарные, числа были бы записаны побайтово (без пробелов даже) и прочитать их, открыв файл в блокноте, было бы нельзя

поправил реализацию немного, удобнее сразу с glob.glob() подавать
def cat(seq, enc='utf-8'):
    for fname in seq:
        with open(fname, encoding=enc) as fin:
            for line in fin:
                yield line
 
lines = cat(['/etc/passwd', '/etc/fstab'])
somefile.write(lines)
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