xportálás a bináris által használt fájlformátum egy csomó Egyesült Államok kormányzati szervek megjelentetésére adathalmazok. & Nbsp; Ez történt sok értelme, ha akarták olvasni adatot a IBM mainframe vissza 1988-ban.
Hogyan tudom használni?
Nézzük, hogy ez rövid és édes:
import xportálás
A xport.XportReader (xport_file), mint olvasó:
& Nbsp; a sort olvasó:
& Nbsp; print sorban
Minden sor lesz dict kulccsal minden területen a adatbázisba. Értékek lesznek vagy egy Unicode karakterlánc, a float vagy int, attól függően, hogy az adott típust a fájlt az adott mező.
fájlállapot info
Ha van egy XportReader tárgy, van néhány tulajdonságok és módszerek, hogy Önnek részleteket a fájlt:
- Reader.file: a mögöttes Python fájl objektum (lásd a következő szakaszt).
- Reader.record_start: a helyzet (byte-ban) a fájlban, ahol feljegyzéseket kezdeni (lásd a következő szakaszt).
& Nbsp; reader.record_length: hossza (byte-ban) minden rekord (lásd a következő szakaszt).
- Reader.record_count (): rekordok száma fájlt. (Figyelem: arra törekszik, hogy a végén a fájlban, hogy a fájl hossza.)
- Reader.file_info és reader.member_info: dicts információkat tartalmazó mikor és hogyan adatbázisba jött létre.
- Reader.fields: mezőlista a adatbázisba. Minden mező egy dict, amely a következő kulcsokat, másolták a spec:
& Nbsp; struct NAMESTR {
& Nbsp; rövid ntype; / * A változó típusa: 1 = NUMERIC, 2 = KAR * /
& Nbsp; rövid nhfun; / * Hash-NNAME (mindig 0) * /
& Nbsp; * rövid field_length; / * HOSSZÁNAK változó OBSERVATION * /
& Nbsp; rövid nvar0; / * Varnum * /
& Nbsp; * char8 nevét; / * Változó neve * /
& Nbsp; * char40 címkén; / * Címkével változó * /
& Nbsp; char8 nform; / * NEVE FORMAT * /
& Nbsp; rövid NFL; / * FORMAT pályahossz OR 0 * /
& Nbsp; * rövid num_decimals; / * FORMAT tizedes jegyek számát * /
& Nbsp; rövid nfj; / * 0 = LEFT indoklás 1 = jó Csak * /
& Nbsp; char nfill [2]; / * (Unused, rendezéséhez és jövőbeli) * /
& Nbsp; char8 niversal; / * NEVE bemeneti formátum * /
& Nbsp; rövid nifl; / * INFORMAT HOSSZ ATTRIBUTE * /
& Nbsp; rövid nifd; / * INFORMAT tizedes jegyek számát * /
& Nbsp; hosszú nonprofit szervezetek; / * Pozíció értékes OBSERVATION * /
& Nbsp; char többi [52]; / * Többi mező lényegtelen * /
& Nbsp;};
& nbsp; Megjegyzés: elemek csillagok már átnevezték a rövid neveket adni a spec. Mivel ez egy alfa verzióját, más tételekkel átnevezték a jövőben, ha valaki azt mondja nekem, hogy mire az.
Véletlen hozzáférést rekordot
Ha azt szeretnénk, hogy hozzáférjen bizonyos nyilvántartások helyett iterációjával, akkor a Python szabványos fájl elérési funkció és egy kis matek.
Get 1000. rekord:
reader.file.seek (reader.record_start + reader.record_length * 1000, 0)
reader.next ()
Get felvétel előtt legutóbbi lekérés:
reader.file.seek (-reader.record_length * 2, 1)
reader.next ()
Get utolsó rekord:
reader.file.seek (reader.record_start + reader.record_length * (reader.record_count () - 1), 0)
reader.next ()
(Ez utóbbi például, vegye figyelembe, hogy nem tudunk keresni a fájl végére, mert előfordulhat, hogy padding bájt. A jó öreg fix szélességű bináris formátumok.)
Kérjük erősít / lopni ezt a kódot!
Azért írtam ezt, mert úgy tűnt, nevetséges, hogy nem volt egyszerű módja annak, hogy olvassa el a szokásos kormányzati adatok formátuma a legtöbb programozási nyelvben. Én lehet, hogy ütött a dolgok rosszul. Ha talál egy fájlt, hogy nem dekódolja propery, küldjön egy pull kérést. A hivatalos spec van itt. Meglepően egyszerű, egy bináris fájlformátumot a 80-as években.
Kérjük, használja bátran ezt a kódot, mint a bázis írni a saját könyvtár a kedvenc programozási nyelv. A kormányzati adatokat kell hozzáférhetővé tenni, ember.
követelmények :
- Python
Hozzászólás nem található