2017-10-27 1 views
0

모듈 pypxlib를 사용하여 Paradox 데이터베이스 파일 (.DB)에서 데이터 파일을 읽습니다.Python 'None'값은 -2147483648로 표시됩니다.

각 행을 읽는 동안 CSV에 씁니다.

'None'으로 예상되는 값은 -2147483648로 표시됩니다.

누구든지이 번호의 중요성을 알고 있습니까? 이 오류가 나타나는 이유는 무엇입니까? 아래

코드 :

for idx in range(0,len(matches)): #for each file found 
    print "processing %s" % matches[idx]['file'] 
    #outputfile = path.join('./output/' + form_file_name(dbfile) + '.csv') 
    try: 
    myTable = Table(matches[idx]['file']) #class from pypxlib that takes a filepath 
    cols = []        #and creates a 'table' that can be read 
    for col in myTable.fields: #gets fields from the table 
     cols.append(col) 
    pTable = [] 

    with open(output_folder +"/myoutput_" + matches[idx]['f'] + ".csv", "wb") as f: 
     writer = csv.writer(f) 
     writer.writerow(cols) 
     rowcount = 0 
     for row in myTable: # for every row in table 
      myRow = [] 
      for fld in cols: # for every cell in the row 
       myRow.append(row[fld]) #append cell to the row 
      writer.writerow(myRow) #then write the row to the csv 
      rowcount = rowcount + 1 
      if rowcount >= 100: 
       break #just testing on the first 1000 records 
+0

해당 숫자의 중요성에 대해 : -2147483648은 서명 된 int32가 가질 수있는 가장 작은 값입니다 (-2.147.483.648에서 2.147.483.647까지). 그 대신에 None을 반환하는 이유는 무엇입니까? 모르겠습니다. 'pypxlib'에 대해서는 아무 것도 없지만 당신이 무언가를 찾을 수 있는지 확인하기 위해 그들의 문서를 점검 할 것입니다. – orangeInk

+0

이 값을받는 열의 유형을 확인 했습니까? – Srgrn

답변

1

역설 테이블 '수'(64 비트 부동 소수점) 등 여러 가지 숫자 유형을 포함, '정수 (Long)'(32 비트 정수), 그리고 '짧은'(16 비트 부호있는 정수). 이러한 유형의 각각은 0과 구별되는 '공백'을 나타 내기 위해 지정된 대역 내 값을 갖습니다. 이들은 '없음'이되기를 기대하는 값입니다.

pxlib 라이브러리와 pypxlib 래퍼가 Paradox 데이터를 Python 데이터 유형으로 변환하면 '비어 있음'의 대역 내 값이 1로 변환되고 그 다음에는 모두 0이됩니다. 2의 보수 표기법에서 이것은 양수 및 음수 방향 모두에서 0에서 가장 먼 값입니다.

BDE 유형이 'Long Integer'이면이 값은 실제로 -2147483648로 표시됩니다.

관련 문제