ie on binaaritiedostomuodon käyttämä joukko Yhdysvaltain valtion virastojen julkaisemiseen tietoja. & Nbsp; Se teki paljon järkeä, jos yritit lukea datatiedostot IBM mainframe takaisin vuonna 1988.
Miten käytän sitä?
Tehdään tästä lyhyt ja makea:
tuonti xport
kanssa xport.XportReader (xport_file) kuin lukija:
& Nbsp; rivi lukija:
& Nbsp; print rivi
Kullakin rivillä on dict avaimella jokaisen kentän aineisto. Arvot ovat joko Unicode merkkijono, float tai int, riippuen määritelty tiedoston kyseiselle kentälle.
Getting file info
Kun olet XportReader esine, on olemassa muutamia ominaisuuksia ja menetelmiä, jotka antavat sinulle tietoja tiedostoon:
- Reader.file: taustalla Python tiedosto objekti (katso seuraava kohta).
- Reader.record_start: asema (tavuina) tiedostoon, jossa kirjaa aloittaa (katso seuraava kohta).
& Nbsp; reader.record_length: pituus (tavuina) Kunkin tietueen (katso seuraava kohta).
- Reader.record_count (): tietueiden määrä tiedoston. (Varoitus: tämä pyrkii tiedoston loppuun määrittää tiedoston pituus.)
- Reader.file_info ja reader.member_info: kyinen sisältää tietoja siitä, milloin ja miten aineisto on luotu.
- Reader.fields: luettelo kentät aineisto. Jokainen kenttä on dict joka sisältää seuraavat avaimet, kopioitu spec:
& Nbsp; struct NAMESTR {
& Nbsp; lyhyet nKirjoita; / * Muuttujatyyppi: 1 = numeerinen, 2 = MERKKI * /
& Nbsp; lyhyet nhfun; / * Hash nname (aina 0) * /
& Nbsp; * lyhyet field_length; / * PITUUS muuttuja TARKKAILUILMA * /
& Nbsp; lyhyet nvar0; / * VARNUM * /
& Nbsp; * char8 nimi; / * NIMI muuttujan * /
& Nbsp; * char40 etiketti; / * LABEL muuttujan * /
& Nbsp; char8 nform; / * NIMI MUOTO * /
& Nbsp; lyhyet NFL; / * Muotokenttään PITUUS TAI 0 * /
& Nbsp; * lyhyet num_decimals; / * MUOTO määrä desimaaleja * /
& Nbsp; lyhyet nfj; / * 0 = LEFT PERUSTELUT, 1 = oikealle juuri * /
& Nbsp; char nfill [2]; / * (Käyttämätön kohdistus ja tulevaisuudessa) * /
& Nbsp; char8 niform; / * NIMI syötemuoto * /
& Nbsp; lyhyet nifl; / * INFORMAT PITUUS ATTRIBUTE * /
& Nbsp; lyhyet nifd; / * INFORMAT määrä desimaaleja * /
& Nbsp; pitkä voittoa tavoittelemattomien järjestöjen; / * KANTA ARVO TARKKAILUILMA * /
& Nbsp; char loput [52]; / * Loput kentät ovat merkityksettömiä * /
& Nbsp;};
& nbsp; HUOMAUTUS: kohdetta tähdillä on nimetty uudelleen lyhyet nimet annetaan spec. Koska tämä on alpha-versiota, muut tuotteet voidaan nimetä uudelleen tulevaisuudessa, jos joku kertoo minulle, mitä he varten.
Random access kirjaa
Jos haluat käyttää erityistä kirjanpitoa, eikä iteroimalla, voit käyttää Pythonin vakiotiedostomuoto käyttää toimintoja ja hieman matematiikkaa.
Get 1000. ennätys:
reader.file.seek (reader.record_start + reader.record_length * 1000, 0)
reader.next ()
Saat ennätys ennen viimeisin haettu:
reader.file.seek (-reader.record_length * 2, 1)
reader.next ()
Hanki viime ennätys:
reader.file.seek (reader.record_start + reader.record_length * (reader.record_count () - 1), 0)
reader.next ()
(Tässä viimeisessä esimerkissä, huomaa, että emme voi hakea lopusta tiedoston, koska siellä voi olla täyttötavut. Hyvä vanha kiinteävälisinä binaaritiedostomuodot.)
Korjaa / varastaa koodia!
Kirjoitin tämän, koska ne näytti naurettavaa, että ei ollut helppo tapa lukea standardin hallitus dataformaattia useimmilla ohjelmointikielillä. Olen ehkä saanut asioita väärin. Jos löydät tiedoston, joka ei purkaa propery, lähetä pull pyynnöstä. Viralliset spec on täällä. Se on yllättävän suoraviivaista binaaritiedostomuodon 80s.
Muista myös vapaasti käyttää tätä koodia tukikohtana kirjoittaa oman kirjaston suosikkiasi ohjelmointikieli. Hallituksen tietojen tulisi olla saatavilla, mies.
Vaatimukset :
- Python
Kommentteja ei löytynyt