xport

Software skärmdump:
xport
Mjukvaruinformation:
Version: 0.1.0
Ladda upp dagen: 14 Apr 15
Utvecklare: Jack Cushman
Licens: Gratis
Popularitet: 0

Rating: 4.0/5 (Total Votes: 1)

xportera är den binära filformat som används av ett gäng amerikanska myndigheter för att publicera datauppsättningar. & Nbsp; Det gjorde ett mycket vettigt om du försöker läsa datafiler på IBM stordator redan 1988.
Hur använder jag den?
Låt oss göra detta kort och koncist:
import xportera
med xport.XportReader (xport_file) som läsaren:
& Nbsp; för rad i läsaren:
& Nbsp; utskriftsraden
Varje rad blir en dict med en nyckel för varje fält i datamängden. Värden kommer att vara antingen en unicode sträng, en flottör eller en int, beroende på vilken typ som anges i filen för det fältet.
Få file info
När du har ett XportReader objekt, finns det några egenskaper och metoder som ger dig information om filen:
- Reader.file: den underliggande Python filen objekt (se nästa avsnitt).
- Reader.record_start: positionen (i byte) i de dokument där register start (se nästa avsnitt).
& Nbsp; reader.record_length: längden (i byte) av varje post (se nästa avsnitt).
- Reader.record_count (): antalet poster i filen. (Varning: detta kommer att söka till slutet av filen för att avgöra fil längd.)
- Reader.file_info och reader.member_info: dicts innehåller information om när och hur dataset skapades.
- Reader.fields: lista över fälten i datamängden. Varje fält är en dict innehåller följande knappar, kopierats från spec:
& Nbsp; struct NAMESTR {
& Nbsp; kort ntyp; / * VARIABEL TYPE: 1 = NUMERIC, 2 = CHAR * /
& Nbsp; kort nhfun; / * Hash av Nname (alltid 0) * /
& Nbsp; * kort field_length; / * LÄNGD VARIABEL I OBSERVATIONS * /
& Nbsp; kort nvar0; / * Varnum * /
& Nbsp; * char8 namn; / * NAMN RÖRLIG * /
& Nbsp; * char40 etikett; / * ETIKETT FÖR VARIABEL * /
& Nbsp; char8 nform; / * NAMN FORMAT * /
& Nbsp; kort nfl; / * FORMAT FIELD LÄNGD ELLER 0 * /
& Nbsp; * korta num_decimals; / * FORMAT antal decimaler * /
& Nbsp; kort NFJ; / * 0 = VÄNSTER MOTIVERING, 1 = höger precis * /
& Nbsp; char nfill [2]; / * (UNUSED, för anpassningen och FRAMTIDEN) * /
& Nbsp; char8 niform; / * NAMN INPUT FORMAT * /
& Nbsp; kort nifl; / * INFORMAT LÄNGD ATTRIBUTE * /
& Nbsp; kort nifd; / * INFORMAT antal decimaler * /
& Nbsp; långa icke vinstdrivande organisationer; / * STÄLLNING VÄRDE PÅ OBSERVATIONS * /
& Nbsp; char vila [52]; / * Återstående fälten är irrelevanta * /
& Nbsp;};
& nbsp; OBS: poster med stjärnor har bytt namn från de korta namn som anges i spec. Eftersom detta är en alfa-version, kan andra objekt döpas i framtiden, om någon säger till mig vad de är för.
Random tillgång till register
Om du vill komma åt specifika poster, istället för iteration, kan du använda Python standard filåtkomst funktioner och lite matematik.
Få 1000. Resultat:
reader.file.seek (reader.record_start + reader.record_length * 1000, 0)
reader.next ()
Få posten innan senaste som hämtas:
reader.file.seek (-reader.record_length * 2, 1)
reader.next ()
Få sista posten:
reader.file.seek (reader.record_start + reader.record_length * (reader.record_count () - 1), 0)
reader.next ()
(I detta sista exempel notera att vi inte kan söka från slutet av filen, eftersom det kan finnas stoppning bytes. Goda gamla fast bredd binära filformat.)
fixa / stjäla denna kod!
Jag skrev upp detta eftersom det verkade löjligt att det inte fanns något enkelt sätt att läsa en vanlig statlig dataformat i de flesta programmeringsspråk. Jag kan ha fått saker fel. Om du hittar en fil som inte avkoda gård, skicka en förfrågan pull. Den officiella spec är här. Det är förvånansvärt enkelt för en binär fil format från 80-talet.
Ange också gärna använda koden som en bas för att skriva ditt eget bibliotek på din favorit programmeringsspråk. . Regerings uppgifter ska vara tillgängliga, man

Krav :

  • Python

Kommentarer till xport

Kommentarer hittades inte
Kommentar
Slå på bilder!