.
Dışa Aktar ikili fayl data dəstləri nəşr ın dövlət orqanlarının bir dəstə istifadə format & nbsp, siz geri 1988-ci ildə IBM mainframe haqqında məlumat faylları oxumaq üçün çalışırıq, əgər bu mənada bir çox etmişdir.
Mən bunu necə istifadə edə bilərəm?
Bu qısa və şirin edək:
idxal Dışa Aktar
oxucu kimi xport.XportReader (xport_file) ilə:
& Nbsp; oxucu sıra üçün:
& Nbsp; print sıra
Hər bir sıra verilənlər bazasının hər sahə üçün bir əsas ilə bir dict olacaq. Dəyərlər sahədə fayl göstərilən növündən asılı olaraq, bir unicode simli, bir float və ya bir int ya olacaq.
əldə fayl info
Bir XportReader obyekt var, siz fayl haqqında ətraflı məlumat verəcək bir neçə xüsusiyyətləri və üsulları var:
- Reader.file: əsas Python fayl obyekt (növbəti bölməsinə bax).
- Reader.record_start: qeydlər başlamaq fayl (bayt olaraq) mövqe (növbəti bölməsinə bax).
& Nbsp; reader.record_length: (bayt olaraq) uzunluğu Hər bir rekord (növbəti bölməsinə bax).
- Reader.record_count (): fayl yazıların sayı. (Warning: Bu fayl uzunluğu müəyyən etmək üçün fayl sonuna çalışacaq.)
- Reader.file_info və reader.member_info: verilənlər bazasının yaradılmışdır zaman və necə haqqında məlumat ehtiva dicts.
- Reader.fields: verilənlər bazasının sahələrində siyahısı. Hər bir sahədə spec kopyalanır aşağıdakı düymələri olan bir dict edir:
& Nbsp; struct NAMESTR {
& Nbsp; qısa ntype; / * Dəyişən TYPE: 1 = Elektron 2 = CHAR * /
& Nbsp; qısa nhfun; / * NNAME (həmişə 0) OF Hash * /
& Nbsp; * qısa field_length; / * MÜŞAHİDƏ dəyişən BOY * /
& Nbsp; qısa nvar0; / * VARNUM * /
& Nbsp; * char8 adı; / * Dəyişən adı * /
& Nbsp; * char40 etiket; / * Dəyişən LABEL * /
& Nbsp; char8 nform; / * Formatda ADI * /
& Nbsp; qisa nfl; / * FORMAT FIELD BOY OR 0 * /
& Nbsp; * qısa num_decimals; Ondalık / * FORMAT NUMBER * /
& Nbsp; qısa nfj; / * 0 = LEFT əsaslandırılması, 1 = RIGHT JUST * /
& Nbsp; nfill char [2]; / * (Istifadə edilməmiş, qruplaşma və GƏLƏCƏK ÜÇÜN) * /
& Nbsp; char8 niform; / * INPUT formatda ADI * /
& Nbsp; qısa nifl; / * Informat BOY Atribut * /
& Nbsp; qısa nifd; Ondalık / * Informat NUMBER * /
& Nbsp; uzun NPOs; / * MÜŞAHİDƏ IN dəyər MÖVQE * /
& Nbsp; char istirahət [52]; / * Tarlada qalan yersiz * /
& Nbsp;};
& nbsp; Qeyd: ulduzları ilə maddələr spec verilən qısa adları adını edilmişdir. Bu alpha azad olduğundan kimsə onlar olduğunuz mənə deyir, digər maddələr, gələcəkdə adını bilər.
Qeydlər Random giriş
Yerine iterating ki, xüsusi qeydlər daxil olmaq istəyirsinizsə, Python standart fayl giriş funksiyaları və bir az riyaziyyat istifadə edə bilərsiniz.
1000-ci rekord alın:
reader.file.seek (reader.record_start + reader.record_length * 1000, 0)
reader.next ()
Ən son bir alındı əvvəl rekord alın:
reader.file.seek (-reader.record_length * 2, 1)
reader.next ()
Son rekord alın:
reader.file.seek (reader.record_start + reader.record_length * (reader.record_count () - 1), 0)
reader.next ()
(Bu son misal olaraq, padding bytes ola bilər, çünki biz, fayl sonunda axtarmaq bilər ki, qeyd. Yaxşı köhnə sabit eni ikili fayl formatları.)
Oğurlamaq / Bu kodu düzeltmek edin!
Ən proqramlaşdırma dilləri standart hökumət data format oxumaq üçün asan bir yol var idi ki, gülünc görünürdü, çünki mən bu qədər yazdı. Mən hər şeyi yanlış kazanılmış ola bilər. Siz propery deşifre olmayan bir fayl tapmaq, bir açılan göndərin. Rəsmi spec burada. Bu 80-ci bir ikili fayl formatı üçün təəccüblü sadə var.
Həmçinin sevimli proqramlaşdırma dili üçün öz kitabxana yazmaq üçün baza kimi bu kodu istifadə çekinmeyin. . Hökumət data adam, əlçatan olmalıdır
tələblər
- Python
Şərhlər tapılmadı