xport

Skjermbilde programvare:
xport
Prog.varedetaljer:
Versjon: 0.1.0
Last opp dato: 14 Apr 15
Utvikler: Jack Cushman
Lisens: Gratis
Popularitet: 1

Rating: 4.0/5 (Total Votes: 1)

ksporter er den binære filformatet som brukes av en haug med USA offentlige etater for publisering datasett. & Nbsp; Det er gjort mye fornuftig hvis du prøvde å lese datafiler på IBM stormaskin tilbake i 1988.
Hvordan bruker jeg det?
La oss gjøre dette kort og konsis:
import ksporter
med xport.XportReader (xport_file) som leser:
& Nbsp; for rad i leseren:
& Nbsp; print rad
Hver rad vil være en dict med en nøkkel for hvert felt i datasettet. Verdier vil være enten en unicode streng, en dupp eller en int, avhengig av type spesifisert i filen for det feltet.
Får file info
Når du har en XportReader objekt, er det noen egenskaper og metoder som vil gi deg informasjon om filen:
- Reader.file: den underliggende Python fil objekt (se neste avsnitt).
- Reader.record_start: posisjonen (i byte) i filen der poster starte (se neste avsnitt).
& Nbsp; reader.record_length: lengden (i byte) av hver post (se neste avsnitt).
- Reader.record_count (): antall poster i filen. (Advarsel: Dette vil søke til slutten av filen for å finne filen lengde.)
- Reader.file_info og reader.member_info: dicts inneholder informasjon om når og hvordan datasettet ble opprettet.
- Reader.fields: liste over feltene i datasettet. Hvert felt er en dict inneholder følgende taster, kopiert fra spec:
& Nbsp; struct NAMESTR {
& Nbsp; kort nSkriv; / * VARIABEL TYPE: 1 = numerisk, 2 = CHAR * /
& Nbsp; kort nhfun; / * Hash av NNAME (alltid 0) * /
& Nbsp; * kort field_length; / * Lengden på variabel i OBSERVASJON * /
& Nbsp; kort nvar0; / * Varnum * /
& Nbsp; * char8 navn; / * NAVN VARIABEL * /
& Nbsp; * char40 label; / * MERKING AV VARIABEL * /
& Nbsp; char8 nform; / * NAVN FORMAT * /
& Nbsp; kort NFL; / * Formatfeltet lengde eller 0 * /
& Nbsp; * korte num_decimals; / * FORMAT antall desimaler * /
& Nbsp; kort NFJ; / * 0 = VENSTRE rettferdiggjørelse, 1 = HØYRE JUST * /
& Nbsp; char nfill [2]; / * (UBRUKT, før tilpasningen og FUTURE) * /
& Nbsp; char8 niform; / * NAVN INPUT FORMAT * /
& Nbsp; kort nifl; / * INFORMAT LENGDE ATTRIBUTE * /
& Nbsp; kort nifd; / * INFORMAT antall desimaler * /
& Nbsp; lange npos; / * POSISJON AV VERDI I OBSERVASJON * /
& Nbsp; char hvile [52]; / * Resterende feltene er irrelevant * /
& Nbsp;};
& nbsp; MERK: elementer med stjerner har blitt omdøpt fra de korte navn som er gitt i spec. Siden dette er en alpha release, kan andre elementer bli omdøpt i fremtiden, hvis noen forteller meg hva de er for.
Random tilgang til poster
Hvis du ønsker å få tilgang til bestemte poster, i stedet for itera, kan du bruke Python standard filtilgang funksjoner og litt matematikk.
Få 1000th rekord:
reader.file.seek (reader.record_start + reader.record_length * 1000, 0)
reader.next ()
Få rekord før siste man hentet:
reader.file.seek (-reader.record_length * 2, 1)
reader.next ()
Få siste post:
reader.file.seek (reader.record_start + reader.record_length * (reader.record_count () - 1), 0)
reader.next ()
(I dette siste eksempelet, oppmerksom på at vi ikke kan søke fra slutten av filen, fordi det kan være padding bytes. Gode gamle fast bredde binære filformatene.)
Fiks / stjele denne koden!
Jeg skrev dette opp fordi det virket latterlig at det var ingen enkel måte å lese en standard regjering dataformat i de fleste programmeringsspråk. Jeg kan ha fått ting galt. Hvis du finner en fil som ikke dekode propery, send en pull forespørsel. Den offisielle spec er her. Det er overraskende enkelt for et binært filformat fra 80-tallet.
Ta også gjerne bruke denne koden som en base for å skrive ditt eget bibliotek for din favoritt programmeringsspråk. . Offentlige data skal være tilgjengelig, man

Krav :

  • Python

Kommentarer til xport

Kommentarer ikke funnet
Legg til kommentar
Slå på bilder!