0

多くのデータ ファイルがあるディレクトリがありますが、データ ファイル名には任意の番号が付けられています。例えば

data_T_1e-05.d
data_T_7.2434.d
data_T_0.001.d

等々。ファイル名に小数点があるため、数値の値に従ってソートされません。私がやりたいことは次のとおりです。すべてのファイルを開き、ファイル名から番号を抽出し、それを配列に入れ、データを使用していくつかの操作を行います。例:

a = np.loadtxt("data_T_1e-05.d",unpack=True)
res[i][0] = 1e-05
res[i][1] = np.sum[a]

ループを実行して、すべてのファイルに対してこれを実行したいと考えています。import osすべてのファイル名を含む配列を作成し(を使用)、それを使用して何かを行うことで実行できると思います。どうすればそれができますか?

4

2 に答える 2

8

ファイルがすべて同じプレフィックスで始まり、同じサフィックスで終わる場合は、単純にスライスしてに渡しますfloat()

number = float(filename[7:-2])

data_T_これにより、最初の 7 文字 (つまり) と最後の 2文字 ( )が削除され.dます。

これは、サンプルのファイル名に対してうまく機能します:

>>> for example in ('data_T_1e-05.d', 'data_T_7.2434.d', 'data_T_0.001.d'):
...     print float(example[7:-2])
... 
1e-05
7.2434
0.001
于 2013-03-14T18:57:23.877 に答える
1
import os
# create the list containing all files from the current dir
filelistall = os.listdir(os.getcwd())
# create the list containing only data files. 
# I assume that data file names end with ".d"
filelist = filter(lambda x: x.endswith('.d'), filelistall)
for filename in filelist:
   f = open(filename, "r")
   number = float(filename[7:-2])
   # and any other code dealing with file
   f.close()
于 2013-03-16T04:46:48.573 に答える