.
XPORT는 이진 파일 데이터 세트를 게시하기위한 미국 정부 기관의 무리에 의해 사용되는 포맷 & NBSP입니다, 당신은 다시 1988 년에 당신의 IBM 메인 프레임에 데이터 파일을 읽으려고한다면 그것은 많은 의미를했다.
어떻게 사용합니까?
의이 짧고 달콤한를 만들어 보자 :
수입 XPORT
리더기로 xport.XportReader (xport_file)와 함께 :
& NBSP; 리더 행에 대해 :
& NBSP; 인쇄 행
각 행은 데이터 집합의 각 필드의 키와 DICT 될 것입니다. 값은 해당 필드의 파일에 지정된 유형에 따라, 유니 코드 문자열, 부동 소수점 또는 INT를 할 것이다.
파일 정보 얻기
당신이 XportReader 개체가되면, 당신에게 파일에 대한 자세한 설명을 할 것입니다 몇 가지 속성과 방법이 있습니다 :
- reader.file : 기본 파이썬 파일 객체 (다음 절 참조).
- reader.record_start : 레코드가 시작 파일 (바이트) 위치 (다음 절 참조).
& NBSP; reader.record_length : (바이트) 길이 각 레코드 (다음 섹션 참조).
- reader.record_count () : 파일의 레코드 수. (주의 :이 파일 길이를 결정하는 파일의 끝에 찾을 것이다.)
- reader.file_info 및 reader.member_info : 데이터 집합을 만들 때와 방법에 대한 정보를 포함 dicts.
- reader.fields : 데이터 세트의 필드의 목록입니다. 각 필드는 스펙에서 복사 한 다음 키를 포함하는 DICT입니다 :
& NBSP; 구조체 NAMESTR {
& NBSP; 짧은 ntype; / * 변수 TYPE : 1 = 숫자, 2 = CHAR의 * /
& NBSP; 짧은 nhfun; / * NNAME (항상 0)의 HASH * /
& NBSP; * 짧은 field_length; / * 차례 관찰 변수의 길이 * /
& NBSP; 짧은 nvar0; / * VARNUM의 * /
& NBSP; * char8 이름; / * 변수의 이름 * /
& NBSP; * char40 레이블; / * 변수의 LABEL * /
& NBSP; char8의 n 양식; / * FORMAT의 이름 * /
& NBSP; 짧은 풋볼; / * 형식 필드의 길이 또는 0 * /
& NBSP; * 짧은 num_decimals; 소수점 이하 / * FORMAT 번호 * /
& NBSP; 짧은 nfj; / * 0 = LEFT JUSTIFICATION, 1 = RIGHT 그냥 * /
& NBSP; nfill 숯불 [2] / * (사용하지 않은, 정렬 및 미래에 대한) * /
& NBSP; char8의 niform; / * 입력 형식의 이름 * /
& NBSP; 짧은 nifl; / * INFORMAT의 길이 속성 * /
& NBSP는, 짧은 nifd; 소수점 이하 / * INFORMAT 번호 * /
& NBSP; 긴 비영리 단체; / * 차례 관찰 VALUE의 위치 * /
& NBSP; 문자 휴식 [52] / * 나머지 필드는 무관 * /
& NBSP;};
& NBSP; 참고 : 별 항목은 사양에 주어진 짧은 이름에서 이름이 변경되었습니다. 이 알파 버전이기 때문에 누군가가 무슨 의미 나에게 이야기하면, 다른 항목은, 향후 변경 될 수 있습니다.
기록에 랜덤 액세스
대신, 반복, 특정 기록에 액세스하려는 경우, 당신은 파이썬의 표준 파일 액세스 기능과 약간의 수학을 사용할 수 있습니다.
1000 레코드를 가져 오기 :
reader.file.seek (reader.record_start + reader.record_length * 1000, 0)
reader.next ()
가장 최근 반입 전에 레코드를 가져 오기 :
reader.file.seek (-reader.record_length * 2, 1)
reader.next ()
마지막 레코드를 가져 오기 :
reader.file.seek (reader.record_start reader.record_length + * (reader.record_count () - 1), 0)
reader.next ()
(이 마지막 예에서, 패딩 바이트있을 수 있기 때문에, 우리는, 파일의 단부에서 추구 할 수 없습니다. 좋은 오래 고정 폭 이진 파일 포맷.)
수정하시기 바랍니다 /이 코드를 도용!
그것은 대부분의 프로그래밍 언어의 표준 정부 데이터 포맷을 읽을 수있는 쉬운 방법이 없다는 말도 같았다 때문에 나는 이것을 썼다. 나는 일이 잘못 찍었을 수도. 당신이 propery를 디코딩하지 않는 파일을 찾을 경우, 풀 요청을 보냅니다. 공식 스펙은 여기에있다. 그것은 80 년대의 바이너리 파일 형식에 대한 놀라 울 정도로 간단합니다.
또한 좋아하는 프로그래밍 언어에 대한 자신의 라이브러리를 작성하는 기초로이 코드를 사용하여 주시기 바랍니다. 정부 데이터는 사람, 액세스 할 수 있어야합니다
이 요구 사항 : 있습니다.
파이썬
댓글을 찾을 수 없습니다