从服务命名约定的每个文本文件中提取一个值 - 如何?

时间:2016-07-04 19:47:08

标签: python file text extract

我需要提取目录中每个文本文件最后一行的最后一个数字。有人能让我在Python中开始这个吗?数据格式如下:

# time 'A' 'B'
  0.000000E+00 10000 0
  1.000000E+05 7742 2263

其中每个文件中的“#”列为空。文件名遵循以下命名约定:

for i in `seq 1 100`; for j in `seq 1 101`; for letter in {A..D}; 
filename = $letter${j}_${i}.txt

这些文件包含来自KaSim(Kappa语言)中运行模拟的结果数据。我想取出提取数字子集的平均值并绘制一些结果。

Matlab无法处理我正在处理的50,000个文件集。我对Python比较陌生,但我有Matlab和R的经验。我想通过Python和Matlab或R中的分析进行数据提取。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

此代码可以帮助您入门。只要目录只包含您需要最后一个数字的文件,就可以忽略命名约定。因为,您可以在该目录中查找所有文件。

import glob

last_numbers = []
for filename in glob.glob("/path/to/directory/*"):  # dont forget this ending * (its wild character)
    last_number = file.open(filename).readlines()[-1].split(" ")[-1]
    # in case last line is empty line '\n' and your interest is in last second line then it should be '.readlines()[-2].split(" ")[-1]'
    last_numbers.append(last_number)