1

整数をファイルに書き出すのに本当に苦労しています。これが私の状況です。ファイルがあります。「idlist.txt」としましょう。複数の列があり、かなり長い (10,000 行) ですが、データの最初の列だけを気にします。

私はそれをPythonにロードしています:

import numpy as np
FH = np.loadtxt('idlist.txt',delimiter=',',comments='#')

# Testing initial data type
print FH[0,0],type(FH[0,0])
>>> 85000370342.0 <type 'numpy.float64'>

# Converting to integers
F = [int(FH[i,0]) for i in range(len(FH))]
print F[0],type(F[0])
>>> 85000370342 <type 'long'>

ご覧のとおり、データは整数にする必要があります。ここでやりたいことは、このリストのエントリを別のファイルの最初の列 (実際にはファイル全体で唯一の列) として書き出すことです。名前を「idonly.txt」に変更できます。これが私がそれをやろうとしている方法です:

with open('idonly.txt','a') as f:
    for i in range(len(F)):
        f.write('%d\n' % (F[i]))

これは明らかに目的の出力を生成していません。ファイル 'idonly.txt' を開くと、各エントリは実際には float (つまり、85000370342.0) です。ここで正確に何が行われているのでしょうか? また、整数をファイルに書き込むのはなぜそんなに複雑な作業なのでしょうか? ここから文字列フォーマットのアイデアを見つけました: How to write integers to a file、しかしそれは私の問題を解決しませんでした。

4

2 に答える 2

1

わかりました、これは完全に私のせいのようです。ファイルを開くときは、追加を意味するモード「a」を使用しています。これを最初にファイルに書き込んだとき、間違っていたことがわかりました。それ以来、正しい答えをそれに追加してきましたが、ファイルが非常に長いため、必要なだけ見下ろしていませんでした。

参考までに、Python でファイルを処理するときに使用できるすべてのモードを次に示します: http://www.tutorialspoint.com/python/python_files_io.htm。慎重に選択してください。

于 2013-06-10T17:22:40.933 に答える