2017-10-27 4 views
0

モジュールpypxlibを使用してParadoxデータベースファイル(.DB)からデータファイルを読み込んでいます。Python 'None'の値は-2147483648と表示されます。

各行を読みながら、私はCSVに書き込みます。

何らかの理由で、「なし」と予想される値が-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

Paradoxテーブルが '番号'(64ビット浮動小数点)を含むいくつかの数値型を含む、 '長整数'(32ビット符号付き整数)、および 'ショート'(16ビット符号付き整数)。これらのタイプのそれぞれは、ゼロと区別されて「ブランク」を表すように指定された帯域内値を有する。これらは、「なし」と予想される値です。

pxlibライブラリとpypxlibラッパーがParadoxデータをPythonデータ型に変換すると、 'blank'のインバンド値は1に変換され、その後に0が続きます。 2の補数表記では、これは正と負の両方向でゼロから最も離れた値です。

BDEタイプが 'Long Integer'の場合、これは実際に-2147483648として表されます。

関連する問題