如何以相同的方式为所有文本文件提取数据并将所有数据合并到一个新的文本文件中。
我有一个文件夹,其中包含 100 个具有相同名称结构"S11_M0978-02MS.tif_batch_CDAQQ.txt"的文本文件。我已经提取了一个文本文件中除前 54 行以外的所有数据。
所有文本文件包括:54行字符串,其余是数据。
以下是文本文件的参考:
[BKM]
BKM Score = 95
FILM Warnings = 0
Edge Detection Warnings = 0
PSD Fitting Warnings = 0
[Data]
A B C
-3.8100387 -3.6444700 -4.0741457
-6.3324452 -2.9988374 -2.6750958
-3.6361003 -3.4405252 -3.8873997
-2.8619325 -2.5122818 -2.6663287
-3.5414995 -3.4363713 -3.7858199
-6.3302993 -2.7874733 -2.4967888
-3.4759179 -3.4262204 -3.7153944
-6.3297628 -2.7358548 -2.4828637
以下是我从一个文本文件中提取数据的方法:
data = np.genfromtxt( "/Python/S06_M015802MS.tif_batch_CDAQQ.txt",
skip_header = 54)
我想以相同的方式为所有文本文件提取数据,并将所有数据合并到一个新的文本文件中。
诸如此类:
-3.8100387 -3.6444700 -4.0741457
-2.9226281 -6.3324452 -2.9988374
-3.6361003 -3.4405252 -3.8873997 --from text 1
-2.7892024 -6.3308358 -2.8619325
-3.5414995 -3.4363713 -3.7858199
-6.3302993 -2.7874733 -2.4967888
-3.4759179 -3.4262204 -3.7153944 --from text 2
-6.3297628 -2.7358548 -2.4828637
.
.
.
您可以按名称模板搜索文件。然后使用concatenate
联接数据,例如:
from os import listdir
import os.path
import re
import numpy as np
path = "/Python/"
filePaths = [os.path.join(path,filename) for filename in listdir(path) if re.match(r"^.*tif_batch.*.txt$", filename)]
data = np.concatenate([np.genfromtxt(f, skip_header = 54) for f in filePaths])
如果需要保存输出数据,可以使用:
outFile=open(os.path.join(path,'concatenated.txt'),'w')
np.savetxt(outFile, ["""
[BKM]
BKM Score = 95
FILM Warnings = 0
Edge Detection Warnings = 0
PSD Fitting Warnings = 0
[Data]
A B C """ ], fmt='%s')
np.savetxt(outFile, data, fmt='%.7f')
outFile.close()