2010-12-14 5 views
10

파이썬 스크립트를 사용하여 .csv 파일을 .dbf 파일로 변환하는 방법은 무엇입니까? 나는이 코드 piece을 온라인에서 찾았지만 얼마나 신뢰할 수 있는지 확신하지 못했습니다. 이 기능을 가진 모듈이 있습니까?파이썬을 사용하여 .csv 파일을 .dbf 파일로 변환 하시겠습니까?

+3

구글은 http://www.fiby.at/dbfpy/ 및 http://pypi.python.org/pypi/dbf/0.88.16에 대해 알려줍니다. 'dbf' 형식은 꽤 단순 해 보입니다. 자신이 게시 한 코드를 확인할 수 있어야합니다. – katrielalex

답변

5

CSV 파일을 읽고 그 파일을 호출하고 2 개의 파일 경로를 제공 할 수있는 DBF 파일을 작성하는 항목은 인터넷에서 찾을 수 없습니다. 각 DBF 필드에 대해 유형, 크기 및 (해당되는 경우) 소수 자릿수를 지정해야합니다.

몇 가지 질문은 :

어떤 소프트웨어는 출력 DBF 파일을 소비하는 것입니다?

"유일한"DBF 파일 형식은 없습니다. dBase III가 필요합니까? dBase 4? 7? Visual FoxPro? 기타?

쓸 텍스트 필드의 최대 길이는 얼마입니까? 비 ASCII 텍스트가 있습니까?

어떤 버전의 파이썬입니까?

최소 요구 사항 (dBase III 형식, 비 ASCII 텍스트 없음, 텍스트 < = 길이가 254 바이트, Python 2.X) 인 경우 인용 한 요리 책 레시피가 작업을 수행해야합니다. 사용

+0

그래, .csv가 dbf로 변환 될 수있는 방법을 좀 더 잘 이해합니다. 내가 사용하고있는 소프트웨어는 ArcGIS이지만, .dbf 형식을 사용하는 스펙을 찾을 수 없습니다. 비 ASCII 텍스트는 없으며, Python 버전은 2.6이고 텍스트 필드의 최대 길이는 20 자입니다. – djq

5

csv library을 사용하여 csv 파일에서 데이터를 읽습니다. 타사 dbf 라이브러리는 dbf 파일을 작성할 수 있습니다.

편집 : 원래는 dbfpy으로 기록했지만 위의 라이브러리는 더 적극적으로 업데이트 된 것 같습니다.

+1

Pythonic이 아닌 라이브러리라면 기능적인 것처럼 보입니다. 확실히 내 북마크에 추가 --- 링크 주셔서 감사합니다! –

+0

가장 큰 단점은 많은 오픈 소스 프로젝트에서 발생하는 끔찍한 문서화 인 것 같습니다. – syrion

+2

슬프게도 dbf에 대한 문서가 너무 제한되어있어 사용법을 알 수 없습니다. 몇 가지 예제 코드 라인이 있습니다 (쉽게 보일 수 있습니다).하지만 작동하지 않습니다. 그럼에도 불구하고, 답변 주셔서 감사합니다! – djq

2

내 지식으로는 잘 연마되지 않았습니다. 수년 동안 xBase 파일을 여러 번 사용 해봐야했고, 할 일이 생길 때마다 코드를 작성하고 있습니다. 나는 어딘가에 나의 백업 중 하나에 꽤 기능적이고 순수한 파이썬 라이브러리를 가지고있다. 그러나 그것이 어디에 있는지 정확히 알지 못한다.

다행히도 xBase 파일 형식이 그다지 복잡하지는 않습니다. 물론 on the Internet 사양을 찾을 수 있습니다. 한눈에 연결 한 모듈은 멋지게 보이지만 사용하기 전에 작업중인 모든 데이터의 복사본을 만들 수 있습니다.

모든 종과 휘파람을 지닌 견고하고 읽기 쉽고 완전한 기능의 xBase 라이브러리는 잠시 동안 내 TODO 목록에 있었던 것입니다. 올해도 남아있을 내용이있을 수도 있습니다. 나는 운이 좋다. .. (아마, 슬픈 듯이).

7

dbf package이 유사한 코드와 기본 csv 파일 얻을 수 있습니다 :이 같은 이름과 중 문자 또는 메모 필드와 F0의 필드 이름, F1, F2와 테이블을 생성합니다

import dbf 
some_table = dbf.from_csv(csvfile='/path/to/file.csv', to_disk=True) 

다른 파일 이름의 경우 filename 매개 변수를 사용하고 필드 이름을 알고있는 경우 field_names 매개 변수를 사용할 수도 있습니다.

some_table = dbf.from_csv(csvfile='data.csv', filename='mytable', 
     field_names='name age birth'.split()) 

오히려 기본 설명서는 here입니다.

공개 사항 : 본인은이 패키지의 저자입니다.

+0

나를 위해 잘 일했다. 그냥 메모 : csv 귀하의 예제에 헤더를하지 않아야, 그렇지 않으면 헤더는 일반 행으로 구문 분석 가져옵니다. – grasshopper

+0

약간 혼란 스럽네요. dbf 0.96.005를보고 있지만, DBase IV 파일을 읽고 쓰는 것이 단호하게 가능하지 않을 수도 있습니다. 지금 dbfpy를 사용하고 있지만 파이썬 2에서 멀어지기를 갈망합니다 ... – parvus

+0

dBase IV는 아직 지원되지 않습니다. –

2

여기에 파이썬 스크립트를 만들었습니다. 모든 CSV 레이아웃에 맞게 사용자 정의 할 수 있어야합니다. 가능하기 전에 DBF 데이터 구조를 알아야합니다. 이 스크립트에는 DBF 헤더 설정과 본문 데이터 용으로 두 개의 csv 파일이 필요합니다. 행운을 빕니다.

https://github.com/mikebrennan/csv2dbf_python

+0

당신의 예제는 dbfpy를 사용합니다. 유감스럽게도 유지 관리되지 않는 것으로 보이고 Python3에서 사용하기 위해 업데이트되지 않습니다 - CStringIO, ao를 사용합니다. 그러나 Python 2에서이 예제가 괜찮 으면 점프 시작을 제공해야합니다. – parvus

관련 문제